From f2b6ede98b25fe969f53ef7113f5b9f2bbf5e869 Mon Sep 17 00:00:00 2001 From: Tomo Suzuki Date: Wed, 21 Oct 2026 15:30:30 +0000 Subject: [PATCH] feat: update API sources and regenerate --- librarian.yaml | 4 +- .../v1/access_context_manager_pb2.py | 202 +- .../v1/gcp_user_access_binding_pb2.py | 10 +- .../google/cloud/audit/audit_log_pb2.py | 32 +- .../cloudbuild_v1/types/cloudbuild.py | 8 + .../gapic/cloudbuild_v1/test_cloud_build.py | 2 + .../cloud/certificate_manager/__init__.py | 2 + .../cloud/certificate_manager_v1/__init__.py | 2 + .../gapic_metadata.json | 15 + .../certificate_manager/async_client.py | 164 + .../services/certificate_manager/client.py | 163 + .../certificate_manager/transports/base.py | 14 + .../certificate_manager/transports/grpc.py | 32 + .../transports/grpc_asyncio.py | 37 + .../certificate_manager/transports/rest.py | 227 + .../transports/rest_base.py | 19 + .../certificate_manager_v1/types/__init__.py | 2 + .../types/certificate_issuance_config.py | 67 +- .../types/certificate_manager.py | 454 +- .../types/trust_config.py | 105 +- ...pdate_certificate_issuance_config_async.py | 62 + ...update_certificate_issuance_config_sync.py | 62 + ...ta_google.cloud.certificatemanager.v1.json | 169 + .../test_certificate_manager.py | 928 + .../google/cloud/dialogflow/__init__.py | 2 + .../google/cloud/dialogflow_v2/__init__.py | 2 + .../cloud/dialogflow_v2/types/__init__.py | 2 + .../cloud/dialogflow_v2/types/audio_config.py | 32 +- .../types/conversation_profile.py | 8 +- .../cloud/dialogflow_v2/types/generator.py | 8 +- .../cloud/dialogflow_v2/types/participant.py | 296 + .../cloud/dialogflow_v2/types/session.py | 10 + .../dialogflow_v2/test_answer_records.py | 14 +- .../test_conversation_profiles.py | 4 +- .../gapic/dialogflow_v2/test_conversations.py | 4 +- .../google/cloud/modelarmor/__init__.py | 8 + .../google/cloud/modelarmor_v1/__init__.py | 8 + .../cloud/modelarmor_v1/types/__init__.py | 8 + .../cloud/modelarmor_v1/types/service.py | 272 +- .../gapic/modelarmor_v1/test_model_armor.py | 9 + .../cloud/redis_cluster_v1beta1/__init__.py | 24 + .../redis_cluster_v1beta1/gapic_metadata.json | 120 + .../cloud_redis_cluster/async_client.py | 1038 + .../services/cloud_redis_cluster/client.py | 1058 ++ .../services/cloud_redis_cluster/pagers.py | 316 + .../cloud_redis_cluster/transports/base.py | 121 + .../cloud_redis_cluster/transports/grpc.py | 232 + .../transports/grpc_asyncio.py | 279 + .../cloud_redis_cluster/transports/rest.py | 2690 ++- .../transports/rest_base.py | 130 + .../redis_cluster_v1beta1/types/__init__.py | 24 + .../types/cloud_redis_cluster.py | 427 + ...loud_redis_cluster_add_auth_token_async.py | 57 + ...cloud_redis_cluster_add_auth_token_sync.py | 57 + ...redis_cluster_add_token_auth_user_async.py | 58 + ..._redis_cluster_add_token_auth_user_sync.py | 58 + ...d_redis_cluster_delete_auth_token_async.py | 57 + ...ud_redis_cluster_delete_auth_token_sync.py | 57 + ...is_cluster_delete_token_auth_user_async.py | 57 + ...dis_cluster_delete_token_auth_user_sync.py | 57 + ...loud_redis_cluster_get_auth_token_async.py | 53 + ...cloud_redis_cluster_get_auth_token_sync.py | 53 + ...redis_cluster_get_token_auth_user_async.py | 53 + ..._redis_cluster_get_token_auth_user_sync.py | 53 + ...ud_redis_cluster_list_auth_tokens_async.py | 54 + ...oud_redis_cluster_list_auth_tokens_sync.py | 54 + ...dis_cluster_list_token_auth_users_async.py | 54 + ...edis_cluster_list_token_auth_users_sync.py | 54 + ...ta_google.cloud.redis.cluster.v1beta1.json | 2288 ++- .../test_cloud_redis_cluster.py | 15740 +++++++++++----- .../types/spanner_instance_admin.py | 52 + .../services/storage_control/async_client.py | 20 + .../services/storage_control/client.py | 20 + .../test_storage_control.py | 459 +- .../health_v4beta/__init__.py | 4 - .../data_points_service/async_client.py | 91 +- .../services/data_points_service/client.py | 91 +- .../services/data_points_service/pagers.py | 156 + .../data_points_service/transports/grpc.py | 6 +- .../transports/grpc_asyncio.py | 6 +- .../health_v4beta/types/__init__.py | 4 - .../health_v4beta/types/data_model.py | 155 - .../health_v4beta/types/data_points.py | 308 +- ...service_daily_roll_up_data_points_async.py | 5 +- ..._service_daily_roll_up_data_points_sync.py | 5 +- ...ogle.devicesandservices.health.v4beta.json | 16 +- .../health_v4beta/test_data_points_service.py | 308 +- .../google/api/field_behavior.proto | 2 +- .../google/api/field_behavior_pb2.py | 4 +- .../google/iam/v1/iam_policy_pb2.py | 30 +- .../iam/v1/resource_policy_member_pb2.py | 8 +- 91 files changed, 24285 insertions(+), 6307 deletions(-) create mode 100644 packages/google-cloud-certificate-manager/samples/generated_samples/certificatemanager_v1_generated_certificate_manager_update_certificate_issuance_config_async.py create mode 100644 packages/google-cloud-certificate-manager/samples/generated_samples/certificatemanager_v1_generated_certificate_manager_update_certificate_issuance_config_sync.py create mode 100644 packages/google-cloud-redis-cluster/samples/generated_samples/redis_v1beta1_generated_cloud_redis_cluster_add_auth_token_async.py create mode 100644 packages/google-cloud-redis-cluster/samples/generated_samples/redis_v1beta1_generated_cloud_redis_cluster_add_auth_token_sync.py create mode 100644 packages/google-cloud-redis-cluster/samples/generated_samples/redis_v1beta1_generated_cloud_redis_cluster_add_token_auth_user_async.py create mode 100644 packages/google-cloud-redis-cluster/samples/generated_samples/redis_v1beta1_generated_cloud_redis_cluster_add_token_auth_user_sync.py create mode 100644 packages/google-cloud-redis-cluster/samples/generated_samples/redis_v1beta1_generated_cloud_redis_cluster_delete_auth_token_async.py create mode 100644 packages/google-cloud-redis-cluster/samples/generated_samples/redis_v1beta1_generated_cloud_redis_cluster_delete_auth_token_sync.py create mode 100644 packages/google-cloud-redis-cluster/samples/generated_samples/redis_v1beta1_generated_cloud_redis_cluster_delete_token_auth_user_async.py create mode 100644 packages/google-cloud-redis-cluster/samples/generated_samples/redis_v1beta1_generated_cloud_redis_cluster_delete_token_auth_user_sync.py create mode 100644 packages/google-cloud-redis-cluster/samples/generated_samples/redis_v1beta1_generated_cloud_redis_cluster_get_auth_token_async.py create mode 100644 packages/google-cloud-redis-cluster/samples/generated_samples/redis_v1beta1_generated_cloud_redis_cluster_get_auth_token_sync.py create mode 100644 packages/google-cloud-redis-cluster/samples/generated_samples/redis_v1beta1_generated_cloud_redis_cluster_get_token_auth_user_async.py create mode 100644 packages/google-cloud-redis-cluster/samples/generated_samples/redis_v1beta1_generated_cloud_redis_cluster_get_token_auth_user_sync.py create mode 100644 packages/google-cloud-redis-cluster/samples/generated_samples/redis_v1beta1_generated_cloud_redis_cluster_list_auth_tokens_async.py create mode 100644 packages/google-cloud-redis-cluster/samples/generated_samples/redis_v1beta1_generated_cloud_redis_cluster_list_auth_tokens_sync.py create mode 100644 packages/google-cloud-redis-cluster/samples/generated_samples/redis_v1beta1_generated_cloud_redis_cluster_list_token_auth_users_async.py create mode 100644 packages/google-cloud-redis-cluster/samples/generated_samples/redis_v1beta1_generated_cloud_redis_cluster_list_token_auth_users_sync.py diff --git a/librarian.yaml b/librarian.yaml index e21b2e92c0da..e861d394feaf 100644 --- a/librarian.yaml +++ b/librarian.yaml @@ -16,8 +16,8 @@ version: v0.49.0 repo: googleapis/google-cloud-python sources: googleapis: - commit: b6efa15f5537f053786e5d8875d75bc3a6246455 - sha256: d432e85ea4bb83e7b0ed83415d24fae57a52e7c51afc7a96c6147a27da85eb02 + commit: 14a161a98ef045be80c12ab69d924504a756f109 + sha256: ce3cee2da77fbdff0e269bc520dc61e8b32efcdec7628b39b9e474a02bc951f6 tools: pip: - name: black diff --git a/packages/google-cloud-access-context-manager/google/identity/accesscontextmanager/v1/access_context_manager_pb2.py b/packages/google-cloud-access-context-manager/google/identity/accesscontextmanager/v1/access_context_manager_pb2.py index 2c88339c0cd5..5efbd1957d1c 100644 --- a/packages/google-cloud-access-context-manager/google/identity/accesscontextmanager/v1/access_context_manager_pb2.py +++ b/packages/google-cloud-access-context-manager/google/identity/accesscontextmanager/v1/access_context_manager_pb2.py @@ -64,7 +64,7 @@ ) DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile( - b'\nDgoogle/identity/accesscontextmanager/v1/access_context_manager.proto\x12\'google.identity.accesscontextmanager.v1\x1a\x1cgoogle/api/annotations.proto\x1a\x17google/api/client.proto\x1a\x1fgoogle/api/field_behavior.proto\x1a\x19google/api/resource.proto\x1a\x1egoogle/iam/v1/iam_policy.proto\x1a\x1agoogle/iam/v1/policy.proto\x1a:google/identity/accesscontextmanager/v1/access_level.proto\x1a;google/identity/accesscontextmanager/v1/access_policy.proto\x1a\x45google/identity/accesscontextmanager/v1/gcp_user_access_binding.proto\x1a?google/identity/accesscontextmanager/v1/service_perimeter.proto\x1a#google/longrunning/operations.proto\x1a google/protobuf/field_mask.proto"\x8c\x01\n\x19ListAccessPoliciesRequest\x12H\n\x06parent\x18\x01 \x01(\tB8\xe0\x41\x02\xfa\x41\x32\n0cloudresourcemanager.googleapis.com/Organization\x12\x11\n\tpage_size\x18\x02 \x01(\x05\x12\x12\n\npage_token\x18\x03 \x01(\t"\x85\x01\n\x1aListAccessPoliciesResponse\x12N\n\x0f\x61\x63\x63\x65ss_policies\x18\x01 \x03(\x0b\x32\x35.google.identity.accesscontextmanager.v1.AccessPolicy\x12\x17\n\x0fnext_page_token\x18\x02 \x01(\t"`\n\x16GetAccessPolicyRequest\x12\x46\n\x04name\x18\x01 \x01(\tB8\xe0\x41\x02\xfa\x41\x32\n0accesscontextmanager.googleapis.com/AccessPolicy"\x9d\x01\n\x19UpdateAccessPolicyRequest\x12J\n\x06policy\x18\x01 \x01(\x0b\x32\x35.google.identity.accesscontextmanager.v1.AccessPolicyB\x03\xe0\x41\x02\x12\x34\n\x0bupdate_mask\x18\x02 \x01(\x0b\x32\x1a.google.protobuf.FieldMaskB\x03\xe0\x41\x02"c\n\x19\x44\x65leteAccessPolicyRequest\x12\x46\n\x04name\x18\x01 \x01(\tB8\xe0\x41\x02\xfa\x41\x32\n0accesscontextmanager.googleapis.com/AccessPolicy"\xdc\x01\n\x17ListAccessLevelsRequest\x12G\n\x06parent\x18\x01 \x01(\tB7\xe0\x41\x02\xfa\x41\x31\x12/accesscontextmanager.googleapis.com/AccessLevel\x12\x11\n\tpage_size\x18\x02 \x01(\x05\x12\x12\n\npage_token\x18\x03 \x01(\t\x12Q\n\x13\x61\x63\x63\x65ss_level_format\x18\x04 \x01(\x0e\x32\x34.google.identity.accesscontextmanager.v1.LevelFormat"\x80\x01\n\x18ListAccessLevelsResponse\x12K\n\raccess_levels\x18\x01 \x03(\x0b\x32\x34.google.identity.accesscontextmanager.v1.AccessLevel\x12\x17\n\x0fnext_page_token\x18\x02 \x01(\t"\xb1\x01\n\x15GetAccessLevelRequest\x12\x45\n\x04name\x18\x01 \x01(\tB7\xe0\x41\x02\xfa\x41\x31\n/accesscontextmanager.googleapis.com/AccessLevel\x12Q\n\x13\x61\x63\x63\x65ss_level_format\x18\x02 \x01(\x0e\x32\x34.google.identity.accesscontextmanager.v1.LevelFormat"\xb4\x01\n\x18\x43reateAccessLevelRequest\x12G\n\x06parent\x18\x01 \x01(\tB7\xe0\x41\x02\xfa\x41\x31\x12/accesscontextmanager.googleapis.com/AccessLevel\x12O\n\x0c\x61\x63\x63\x65ss_level\x18\x02 \x01(\x0b\x32\x34.google.identity.accesscontextmanager.v1.AccessLevelB\x03\xe0\x41\x02"\xa1\x01\n\x18UpdateAccessLevelRequest\x12O\n\x0c\x61\x63\x63\x65ss_level\x18\x01 \x01(\x0b\x32\x34.google.identity.accesscontextmanager.v1.AccessLevelB\x03\xe0\x41\x02\x12\x34\n\x0bupdate_mask\x18\x02 \x01(\x0b\x32\x1a.google.protobuf.FieldMaskB\x03\xe0\x41\x02"a\n\x18\x44\x65leteAccessLevelRequest\x12\x45\n\x04name\x18\x01 \x01(\tB7\xe0\x41\x02\xfa\x41\x31\n/accesscontextmanager.googleapis.com/AccessLevel"\xc5\x01\n\x1aReplaceAccessLevelsRequest\x12G\n\x06parent\x18\x01 \x01(\tB7\xe0\x41\x02\xfa\x41\x31\x12/accesscontextmanager.googleapis.com/AccessLevel\x12P\n\raccess_levels\x18\x02 \x03(\x0b\x32\x34.google.identity.accesscontextmanager.v1.AccessLevelB\x03\xe0\x41\x02\x12\x0c\n\x04\x65tag\x18\x04 \x01(\t"j\n\x1bReplaceAccessLevelsResponse\x12K\n\raccess_levels\x18\x01 \x03(\x0b\x32\x34.google.identity.accesscontextmanager.v1.AccessLevel"\x93\x01\n\x1cListServicePerimetersRequest\x12L\n\x06parent\x18\x01 \x01(\tB<\xe0\x41\x02\xfa\x41\x36\x12\x34\x61\x63\x63\x65sscontextmanager.googleapis.com/ServicePerimeter\x12\x11\n\tpage_size\x18\x02 \x01(\x05\x12\x12\n\npage_token\x18\x03 \x01(\t"\x8f\x01\n\x1dListServicePerimetersResponse\x12U\n\x12service_perimeters\x18\x01 \x03(\x0b\x32\x39.google.identity.accesscontextmanager.v1.ServicePerimeter\x12\x17\n\x0fnext_page_token\x18\x02 \x01(\t"h\n\x1aGetServicePerimeterRequest\x12J\n\x04name\x18\x01 \x01(\tB<\xe0\x41\x02\xfa\x41\x36\n4accesscontextmanager.googleapis.com/ServicePerimeter"\xc8\x01\n\x1d\x43reateServicePerimeterRequest\x12L\n\x06parent\x18\x01 \x01(\tB<\xe0\x41\x02\xfa\x41\x36\x12\x34\x61\x63\x63\x65sscontextmanager.googleapis.com/ServicePerimeter\x12Y\n\x11service_perimeter\x18\x02 \x01(\x0b\x32\x39.google.identity.accesscontextmanager.v1.ServicePerimeterB\x03\xe0\x41\x02"\xb0\x01\n\x1dUpdateServicePerimeterRequest\x12Y\n\x11service_perimeter\x18\x01 \x01(\x0b\x32\x39.google.identity.accesscontextmanager.v1.ServicePerimeterB\x03\xe0\x41\x02\x12\x34\n\x0bupdate_mask\x18\x02 \x01(\x0b\x32\x1a.google.protobuf.FieldMaskB\x03\xe0\x41\x02"k\n\x1d\x44\x65leteServicePerimeterRequest\x12J\n\x04name\x18\x01 \x01(\tB<\xe0\x41\x02\xfa\x41\x36\n4accesscontextmanager.googleapis.com/ServicePerimeter"\xd9\x01\n\x1fReplaceServicePerimetersRequest\x12L\n\x06parent\x18\x01 \x01(\tB<\xe0\x41\x02\xfa\x41\x36\x12\x34\x61\x63\x63\x65sscontextmanager.googleapis.com/ServicePerimeter\x12Z\n\x12service_perimeters\x18\x02 \x03(\x0b\x32\x39.google.identity.accesscontextmanager.v1.ServicePerimeterB\x03\xe0\x41\x02\x12\x0c\n\x04\x65tag\x18\x03 \x01(\t"y\n ReplaceServicePerimetersResponse\x12U\n\x12service_perimeters\x18\x01 \x03(\x0b\x32\x39.google.identity.accesscontextmanager.v1.ServicePerimeter"|\n\x1e\x43ommitServicePerimetersRequest\x12L\n\x06parent\x18\x01 \x01(\tB<\xe0\x41\x02\xfa\x41\x36\x12\x34\x61\x63\x63\x65sscontextmanager.googleapis.com/ServicePerimeter\x12\x0c\n\x04\x65tag\x18\x02 \x01(\t"x\n\x1f\x43ommitServicePerimetersResponse\x12U\n\x12service_perimeters\x18\x01 \x03(\x0b\x32\x39.google.identity.accesscontextmanager.v1.ServicePerimeter"\x9d\x01\n ListGcpUserAccessBindingsRequest\x12H\n\x06parent\x18\x01 \x01(\tB8\xe0\x41\x02\xfa\x41\x32\n0cloudresourcemanager.googleapis.com/Organization\x12\x16\n\tpage_size\x18\x02 \x01(\x05\x42\x03\xe0\x41\x01\x12\x17\n\npage_token\x18\x03 \x01(\tB\x03\xe0\x41\x01"\x9d\x01\n!ListGcpUserAccessBindingsResponse\x12_\n\x18gcp_user_access_bindings\x18\x01 \x03(\x0b\x32=.google.identity.accesscontextmanager.v1.GcpUserAccessBinding\x12\x17\n\x0fnext_page_token\x18\x02 \x01(\t"p\n\x1eGetGcpUserAccessBindingRequest\x12N\n\x04name\x18\x01 \x01(\tB@\xe0\x41\x02\xfa\x41:\n8accesscontextmanager.googleapis.com/GcpUserAccessBinding"\xd2\x01\n!CreateGcpUserAccessBindingRequest\x12H\n\x06parent\x18\x01 \x01(\tB8\xe0\x41\x02\xfa\x41\x32\n0cloudresourcemanager.googleapis.com/Organization\x12\x63\n\x17gcp_user_access_binding\x18\x02 \x01(\x0b\x32=.google.identity.accesscontextmanager.v1.GcpUserAccessBindingB\x03\xe0\x41\x02"\xbe\x01\n!UpdateGcpUserAccessBindingRequest\x12\x63\n\x17gcp_user_access_binding\x18\x01 \x01(\x0b\x32=.google.identity.accesscontextmanager.v1.GcpUserAccessBindingB\x03\xe0\x41\x02\x12\x34\n\x0bupdate_mask\x18\x02 \x01(\x0b\x32\x1a.google.protobuf.FieldMaskB\x03\xe0\x41\x02"s\n!DeleteGcpUserAccessBindingRequest\x12N\n\x04name\x18\x01 \x01(\tB@\xe0\x41\x02\xfa\x41:\n8accesscontextmanager.googleapis.com/GcpUserAccessBinding"\'\n%GcpUserAccessBindingOperationMetadata"\'\n%AccessContextManagerOperationMetadata*D\n\x0bLevelFormat\x12\x1c\n\x18LEVEL_FORMAT_UNSPECIFIED\x10\x00\x12\x0e\n\nAS_DEFINED\x10\x01\x12\x07\n\x03\x43\x45L\x10\x02\x32\xf1\x32\n\x14\x41\x63\x63\x65ssContextManager\x12\xb9\x01\n\x12ListAccessPolicies\x12\x42.google.identity.accesscontextmanager.v1.ListAccessPoliciesRequest\x1a\x43.google.identity.accesscontextmanager.v1.ListAccessPoliciesResponse"\x1a\x82\xd3\xe4\x93\x02\x14\x12\x12/v1/accessPolicies\x12\xb5\x01\n\x0fGetAccessPolicy\x12?.google.identity.accesscontextmanager.v1.GetAccessPolicyRequest\x1a\x35.google.identity.accesscontextmanager.v1.AccessPolicy"*\xda\x41\x04name\x82\xd3\xe4\x93\x02\x1d\x12\x1b/v1/{name=accessPolicies/*}\x12\xc1\x01\n\x12\x43reateAccessPolicy\x12\x35.google.identity.accesscontextmanager.v1.AccessPolicy\x1a\x1d.google.longrunning.Operation"U\xca\x41\x35\n\x0c\x41\x63\x63\x65ssPolicy\x12%AccessContextManagerOperationMetadata\x82\xd3\xe4\x93\x02\x17"\x12/v1/accessPolicies:\x01*\x12\xf8\x01\n\x12UpdateAccessPolicy\x12\x42.google.identity.accesscontextmanager.v1.UpdateAccessPolicyRequest\x1a\x1d.google.longrunning.Operation"\x7f\xca\x41\x35\n\x0c\x41\x63\x63\x65ssPolicy\x12%AccessContextManagerOperationMetadata\xda\x41\x12policy,update_mask\x82\xd3\xe4\x93\x02,2"/v1/{policy.name=accessPolicies/*}:\x06policy\x12\xe4\x01\n\x12\x44\x65leteAccessPolicy\x12\x42.google.identity.accesscontextmanager.v1.DeleteAccessPolicyRequest\x1a\x1d.google.longrunning.Operation"k\xca\x41>\n\x15google.protobuf.Empty\x12%AccessContextManagerOperationMetadata\xda\x41\x04name\x82\xd3\xe4\x93\x02\x1d*\x1b/v1/{name=accessPolicies/*}\x12\xd4\x01\n\x10ListAccessLevels\x12@.google.identity.accesscontextmanager.v1.ListAccessLevelsRequest\x1a\x41.google.identity.accesscontextmanager.v1.ListAccessLevelsResponse";\xda\x41\x06parent\x82\xd3\xe4\x93\x02,\x12*/v1/{parent=accessPolicies/*}/accessLevels\x12\xc1\x01\n\x0eGetAccessLevel\x12>.google.identity.accesscontextmanager.v1.GetAccessLevelRequest\x1a\x34.google.identity.accesscontextmanager.v1.AccessLevel"9\xda\x41\x04name\x82\xd3\xe4\x93\x02,\x12*/v1/{name=accessPolicies/*/accessLevels/*}\x12\x85\x02\n\x11\x43reateAccessLevel\x12\x41.google.identity.accesscontextmanager.v1.CreateAccessLevelRequest\x1a\x1d.google.longrunning.Operation"\x8d\x01\xca\x41\x34\n\x0b\x41\x63\x63\x65ssLevel\x12%AccessContextManagerOperationMetadata\xda\x41\x13parent,access_level\x82\xd3\xe4\x93\x02:"*/v1/{parent=accessPolicies/*}/accessLevels:\x0c\x61\x63\x63\x65ss_level\x12\x97\x02\n\x11UpdateAccessLevel\x12\x41.google.identity.accesscontextmanager.v1.UpdateAccessLevelRequest\x1a\x1d.google.longrunning.Operation"\x9f\x01\xca\x41\x34\n\x0b\x41\x63\x63\x65ssLevel\x12%AccessContextManagerOperationMetadata\xda\x41\x18\x61\x63\x63\x65ss_level,update_mask\x82\xd3\xe4\x93\x02G27/v1/{access_level.name=accessPolicies/*/accessLevels/*}:\x0c\x61\x63\x63\x65ss_level\x12\xf1\x01\n\x11\x44\x65leteAccessLevel\x12\x41.google.identity.accesscontextmanager.v1.DeleteAccessLevelRequest\x1a\x1d.google.longrunning.Operation"z\xca\x41>\n\x15google.protobuf.Empty\x12%AccessContextManagerOperationMetadata\xda\x41\x04name\x82\xd3\xe4\x93\x02,**/v1/{name=accessPolicies/*/accessLevels/*}\x12\x83\x02\n\x13ReplaceAccessLevels\x12\x43.google.identity.accesscontextmanager.v1.ReplaceAccessLevelsRequest\x1a\x1d.google.longrunning.Operation"\x87\x01\xca\x41\x44\n\x1bReplaceAccessLevelsResponse\x12%AccessContextManagerOperationMetadata\x82\xd3\xe4\x93\x02:"5/v1/{parent=accessPolicies/*}/accessLevels:replaceAll:\x01*\x12\xe8\x01\n\x15ListServicePerimeters\x12\x45.google.identity.accesscontextmanager.v1.ListServicePerimetersRequest\x1a\x46.google.identity.accesscontextmanager.v1.ListServicePerimetersResponse"@\xda\x41\x06parent\x82\xd3\xe4\x93\x02\x31\x12//v1/{parent=accessPolicies/*}/servicePerimeters\x12\xd5\x01\n\x13GetServicePerimeter\x12\x43.google.identity.accesscontextmanager.v1.GetServicePerimeterRequest\x1a\x39.google.identity.accesscontextmanager.v1.ServicePerimeter">\xda\x41\x04name\x82\xd3\xe4\x93\x02\x31\x12//v1/{name=accessPolicies/*/servicePerimeters/*}\x12\xa3\x02\n\x16\x43reateServicePerimeter\x12\x46.google.identity.accesscontextmanager.v1.CreateServicePerimeterRequest\x1a\x1d.google.longrunning.Operation"\xa1\x01\xca\x41\x39\n\x10ServicePerimeter\x12%AccessContextManagerOperationMetadata\xda\x41\x18parent,service_perimeter\x82\xd3\xe4\x93\x02\x44"//v1/{parent=accessPolicies/*}/servicePerimeters:\x11service_perimeter\x12\xba\x02\n\x16UpdateServicePerimeter\x12\x46.google.identity.accesscontextmanager.v1.UpdateServicePerimeterRequest\x1a\x1d.google.longrunning.Operation"\xb8\x01\xca\x41\x39\n\x10ServicePerimeter\x12%AccessContextManagerOperationMetadata\xda\x41\x1dservice_perimeter,update_mask\x82\xd3\xe4\x93\x02V2A/v1/{service_perimeter.name=accessPolicies/*/servicePerimeters/*}:\x11service_perimeter\x12\x80\x02\n\x16\x44\x65leteServicePerimeter\x12\x46.google.identity.accesscontextmanager.v1.DeleteServicePerimeterRequest\x1a\x1d.google.longrunning.Operation"\x7f\xca\x41>\n\x15google.protobuf.Empty\x12%AccessContextManagerOperationMetadata\xda\x41\x04name\x82\xd3\xe4\x93\x02\x31*//v1/{name=accessPolicies/*/servicePerimeters/*}\x12\x97\x02\n\x18ReplaceServicePerimeters\x12H.google.identity.accesscontextmanager.v1.ReplaceServicePerimetersRequest\x1a\x1d.google.longrunning.Operation"\x91\x01\xca\x41I\n ReplaceServicePerimetersResponse\x12%AccessContextManagerOperationMetadata\x82\xd3\xe4\x93\x02?":/v1/{parent=accessPolicies/*}/servicePerimeters:replaceAll:\x01*\x12\x90\x02\n\x17\x43ommitServicePerimeters\x12G.google.identity.accesscontextmanager.v1.CommitServicePerimetersRequest\x1a\x1d.google.longrunning.Operation"\x8c\x01\xca\x41H\n\x1f\x43ommitServicePerimetersResponse\x12%AccessContextManagerOperationMetadata\x82\xd3\xe4\x93\x02;"6/v1/{parent=accessPolicies/*}/servicePerimeters:commit:\x01*\x12\xf7\x01\n\x19ListGcpUserAccessBindings\x12I.google.identity.accesscontextmanager.v1.ListGcpUserAccessBindingsRequest\x1aJ.google.identity.accesscontextmanager.v1.ListGcpUserAccessBindingsResponse"C\xda\x41\x06parent\x82\xd3\xe4\x93\x02\x34\x12\x32/v1/{parent=organizations/*}/gcpUserAccessBindings\x12\xe4\x01\n\x17GetGcpUserAccessBinding\x12G.google.identity.accesscontextmanager.v1.GetGcpUserAccessBindingRequest\x1a=.google.identity.accesscontextmanager.v1.GcpUserAccessBinding"A\xda\x41\x04name\x82\xd3\xe4\x93\x02\x34\x12\x32/v1/{name=organizations/*/gcpUserAccessBindings/*}\x12\xbe\x02\n\x1a\x43reateGcpUserAccessBinding\x12J.google.identity.accesscontextmanager.v1.CreateGcpUserAccessBindingRequest\x1a\x1d.google.longrunning.Operation"\xb4\x01\xca\x41=\n\x14GcpUserAccessBinding\x12%GcpUserAccessBindingOperationMetadata\xda\x41\x1eparent,gcp_user_access_binding\x82\xd3\xe4\x93\x02M"2/v1/{parent=organizations/*}/gcpUserAccessBindings:\x17gcp_user_access_binding\x12\xdb\x02\n\x1aUpdateGcpUserAccessBinding\x12J.google.identity.accesscontextmanager.v1.UpdateGcpUserAccessBindingRequest\x1a\x1d.google.longrunning.Operation"\xd1\x01\xca\x41=\n\x14GcpUserAccessBinding\x12%GcpUserAccessBindingOperationMetadata\xda\x41#gcp_user_access_binding,update_mask\x82\xd3\xe4\x93\x02\x65\x32J/v1/{gcp_user_access_binding.name=organizations/*/gcpUserAccessBindings/*}:\x17gcp_user_access_binding\x12\x8c\x02\n\x1a\x44\x65leteGcpUserAccessBinding\x12J.google.identity.accesscontextmanager.v1.DeleteGcpUserAccessBindingRequest\x1a\x1d.google.longrunning.Operation"\x82\x01\xca\x41>\n\x15google.protobuf.Empty\x12%GcpUserAccessBindingOperationMetadata\xda\x41\x04name\x82\xd3\xe4\x93\x02\x34*2/v1/{name=organizations/*/gcpUserAccessBindings/*}\x12\x82\x01\n\x0cSetIamPolicy\x12".google.iam.v1.SetIamPolicyRequest\x1a\x15.google.iam.v1.Policy"7\x82\xd3\xe4\x93\x02\x31",/v1/{resource=accessPolicies/*}:setIamPolicy:\x01*\x12\x82\x01\n\x0cGetIamPolicy\x12".google.iam.v1.GetIamPolicyRequest\x1a\x15.google.iam.v1.Policy"7\x82\xd3\xe4\x93\x02\x31",/v1/{resource=accessPolicies/*}:getIamPolicy:\x01*\x12\xbf\x02\n\x12TestIamPermissions\x12(.google.iam.v1.TestIamPermissionsRequest\x1a).google.iam.v1.TestIamPermissionsResponse"\xd3\x01\x82\xd3\xe4\x93\x02\xcc\x01"2/v1/{resource=accessPolicies/*}:testIamPermissions:\x01*ZF"A/v1/{resource=accessPolicies/*/accessLevels/*}:testIamPermissions:\x01*ZK"F/v1/{resource=accessPolicies/*/servicePerimeters/*}:testIamPermissions:\x01*\x1aW\xca\x41#accesscontextmanager.googleapis.com\xd2\x41.https://www.googleapis.com/auth/cloud-platformB\xb0\x02\n+com.google.identity.accesscontextmanager.v1B\x19\x41\x63\x63\x65ssContextManagerProtoP\x01Z\\cloud.google.com/go/accesscontextmanager/apiv1/accesscontextmanagerpb;accesscontextmanagerpb\xa2\x02\x04GACM\xaa\x02\'Google.Identity.AccessContextManager.V1\xca\x02\'Google\\Identity\\AccessContextManager\\V1\xea\x02*Google::Identity::AccessContextManager::V1b\x06proto3' + b'\nDgoogle/identity/accesscontextmanager/v1/access_context_manager.proto\x12\'google.identity.accesscontextmanager.v1\x1a\x1cgoogle/api/annotations.proto\x1a\x17google/api/client.proto\x1a\x1fgoogle/api/field_behavior.proto\x1a\x19google/api/resource.proto\x1a\x1egoogle/iam/v1/iam_policy.proto\x1a\x1agoogle/iam/v1/policy.proto\x1a:google/identity/accesscontextmanager/v1/access_level.proto\x1a;google/identity/accesscontextmanager/v1/access_policy.proto\x1a\x45google/identity/accesscontextmanager/v1/gcp_user_access_binding.proto\x1a?google/identity/accesscontextmanager/v1/service_perimeter.proto\x1a#google/longrunning/operations.proto\x1a google/protobuf/field_mask.proto"\x8d\x01\n\x19ListAccessPoliciesRequest\x12I\n\x06parent\x18\x01 \x01(\tB9\xe2\x41\x01\x02\xfa\x41\x32\n0cloudresourcemanager.googleapis.com/Organization\x12\x11\n\tpage_size\x18\x02 \x01(\x05\x12\x12\n\npage_token\x18\x03 \x01(\t"\x85\x01\n\x1aListAccessPoliciesResponse\x12N\n\x0f\x61\x63\x63\x65ss_policies\x18\x01 \x03(\x0b\x32\x35.google.identity.accesscontextmanager.v1.AccessPolicy\x12\x17\n\x0fnext_page_token\x18\x02 \x01(\t"a\n\x16GetAccessPolicyRequest\x12G\n\x04name\x18\x01 \x01(\tB9\xe2\x41\x01\x02\xfa\x41\x32\n0accesscontextmanager.googleapis.com/AccessPolicy"\x9f\x01\n\x19UpdateAccessPolicyRequest\x12K\n\x06policy\x18\x01 \x01(\x0b\x32\x35.google.identity.accesscontextmanager.v1.AccessPolicyB\x04\xe2\x41\x01\x02\x12\x35\n\x0bupdate_mask\x18\x02 \x01(\x0b\x32\x1a.google.protobuf.FieldMaskB\x04\xe2\x41\x01\x02"d\n\x19\x44\x65leteAccessPolicyRequest\x12G\n\x04name\x18\x01 \x01(\tB9\xe2\x41\x01\x02\xfa\x41\x32\n0accesscontextmanager.googleapis.com/AccessPolicy"\xdd\x01\n\x17ListAccessLevelsRequest\x12H\n\x06parent\x18\x01 \x01(\tB8\xe2\x41\x01\x02\xfa\x41\x31\x12/accesscontextmanager.googleapis.com/AccessLevel\x12\x11\n\tpage_size\x18\x02 \x01(\x05\x12\x12\n\npage_token\x18\x03 \x01(\t\x12Q\n\x13\x61\x63\x63\x65ss_level_format\x18\x04 \x01(\x0e\x32\x34.google.identity.accesscontextmanager.v1.LevelFormat"\x80\x01\n\x18ListAccessLevelsResponse\x12K\n\raccess_levels\x18\x01 \x03(\x0b\x32\x34.google.identity.accesscontextmanager.v1.AccessLevel\x12\x17\n\x0fnext_page_token\x18\x02 \x01(\t"\xb2\x01\n\x15GetAccessLevelRequest\x12\x46\n\x04name\x18\x01 \x01(\tB8\xe2\x41\x01\x02\xfa\x41\x31\n/accesscontextmanager.googleapis.com/AccessLevel\x12Q\n\x13\x61\x63\x63\x65ss_level_format\x18\x02 \x01(\x0e\x32\x34.google.identity.accesscontextmanager.v1.LevelFormat"\xb6\x01\n\x18\x43reateAccessLevelRequest\x12H\n\x06parent\x18\x01 \x01(\tB8\xe2\x41\x01\x02\xfa\x41\x31\x12/accesscontextmanager.googleapis.com/AccessLevel\x12P\n\x0c\x61\x63\x63\x65ss_level\x18\x02 \x01(\x0b\x32\x34.google.identity.accesscontextmanager.v1.AccessLevelB\x04\xe2\x41\x01\x02"\xa3\x01\n\x18UpdateAccessLevelRequest\x12P\n\x0c\x61\x63\x63\x65ss_level\x18\x01 \x01(\x0b\x32\x34.google.identity.accesscontextmanager.v1.AccessLevelB\x04\xe2\x41\x01\x02\x12\x35\n\x0bupdate_mask\x18\x02 \x01(\x0b\x32\x1a.google.protobuf.FieldMaskB\x04\xe2\x41\x01\x02"b\n\x18\x44\x65leteAccessLevelRequest\x12\x46\n\x04name\x18\x01 \x01(\tB8\xe2\x41\x01\x02\xfa\x41\x31\n/accesscontextmanager.googleapis.com/AccessLevel"\xc7\x01\n\x1aReplaceAccessLevelsRequest\x12H\n\x06parent\x18\x01 \x01(\tB8\xe2\x41\x01\x02\xfa\x41\x31\x12/accesscontextmanager.googleapis.com/AccessLevel\x12Q\n\raccess_levels\x18\x02 \x03(\x0b\x32\x34.google.identity.accesscontextmanager.v1.AccessLevelB\x04\xe2\x41\x01\x02\x12\x0c\n\x04\x65tag\x18\x04 \x01(\t"j\n\x1bReplaceAccessLevelsResponse\x12K\n\raccess_levels\x18\x01 \x03(\x0b\x32\x34.google.identity.accesscontextmanager.v1.AccessLevel"\x94\x01\n\x1cListServicePerimetersRequest\x12M\n\x06parent\x18\x01 \x01(\tB=\xe2\x41\x01\x02\xfa\x41\x36\x12\x34\x61\x63\x63\x65sscontextmanager.googleapis.com/ServicePerimeter\x12\x11\n\tpage_size\x18\x02 \x01(\x05\x12\x12\n\npage_token\x18\x03 \x01(\t"\x8f\x01\n\x1dListServicePerimetersResponse\x12U\n\x12service_perimeters\x18\x01 \x03(\x0b\x32\x39.google.identity.accesscontextmanager.v1.ServicePerimeter\x12\x17\n\x0fnext_page_token\x18\x02 \x01(\t"i\n\x1aGetServicePerimeterRequest\x12K\n\x04name\x18\x01 \x01(\tB=\xe2\x41\x01\x02\xfa\x41\x36\n4accesscontextmanager.googleapis.com/ServicePerimeter"\xca\x01\n\x1d\x43reateServicePerimeterRequest\x12M\n\x06parent\x18\x01 \x01(\tB=\xe2\x41\x01\x02\xfa\x41\x36\x12\x34\x61\x63\x63\x65sscontextmanager.googleapis.com/ServicePerimeter\x12Z\n\x11service_perimeter\x18\x02 \x01(\x0b\x32\x39.google.identity.accesscontextmanager.v1.ServicePerimeterB\x04\xe2\x41\x01\x02"\xb2\x01\n\x1dUpdateServicePerimeterRequest\x12Z\n\x11service_perimeter\x18\x01 \x01(\x0b\x32\x39.google.identity.accesscontextmanager.v1.ServicePerimeterB\x04\xe2\x41\x01\x02\x12\x35\n\x0bupdate_mask\x18\x02 \x01(\x0b\x32\x1a.google.protobuf.FieldMaskB\x04\xe2\x41\x01\x02"l\n\x1d\x44\x65leteServicePerimeterRequest\x12K\n\x04name\x18\x01 \x01(\tB=\xe2\x41\x01\x02\xfa\x41\x36\n4accesscontextmanager.googleapis.com/ServicePerimeter"\xdb\x01\n\x1fReplaceServicePerimetersRequest\x12M\n\x06parent\x18\x01 \x01(\tB=\xe2\x41\x01\x02\xfa\x41\x36\x12\x34\x61\x63\x63\x65sscontextmanager.googleapis.com/ServicePerimeter\x12[\n\x12service_perimeters\x18\x02 \x03(\x0b\x32\x39.google.identity.accesscontextmanager.v1.ServicePerimeterB\x04\xe2\x41\x01\x02\x12\x0c\n\x04\x65tag\x18\x03 \x01(\t"y\n ReplaceServicePerimetersResponse\x12U\n\x12service_perimeters\x18\x01 \x03(\x0b\x32\x39.google.identity.accesscontextmanager.v1.ServicePerimeter"}\n\x1e\x43ommitServicePerimetersRequest\x12M\n\x06parent\x18\x01 \x01(\tB=\xe2\x41\x01\x02\xfa\x41\x36\x12\x34\x61\x63\x63\x65sscontextmanager.googleapis.com/ServicePerimeter\x12\x0c\n\x04\x65tag\x18\x02 \x01(\t"x\n\x1f\x43ommitServicePerimetersResponse\x12U\n\x12service_perimeters\x18\x01 \x03(\x0b\x32\x39.google.identity.accesscontextmanager.v1.ServicePerimeter"\xa0\x01\n ListGcpUserAccessBindingsRequest\x12I\n\x06parent\x18\x01 \x01(\tB9\xe2\x41\x01\x02\xfa\x41\x32\n0cloudresourcemanager.googleapis.com/Organization\x12\x17\n\tpage_size\x18\x02 \x01(\x05\x42\x04\xe2\x41\x01\x01\x12\x18\n\npage_token\x18\x03 \x01(\tB\x04\xe2\x41\x01\x01"\x9d\x01\n!ListGcpUserAccessBindingsResponse\x12_\n\x18gcp_user_access_bindings\x18\x01 \x03(\x0b\x32=.google.identity.accesscontextmanager.v1.GcpUserAccessBinding\x12\x17\n\x0fnext_page_token\x18\x02 \x01(\t"q\n\x1eGetGcpUserAccessBindingRequest\x12O\n\x04name\x18\x01 \x01(\tBA\xe2\x41\x01\x02\xfa\x41:\n8accesscontextmanager.googleapis.com/GcpUserAccessBinding"\xd4\x01\n!CreateGcpUserAccessBindingRequest\x12I\n\x06parent\x18\x01 \x01(\tB9\xe2\x41\x01\x02\xfa\x41\x32\n0cloudresourcemanager.googleapis.com/Organization\x12\x64\n\x17gcp_user_access_binding\x18\x02 \x01(\x0b\x32=.google.identity.accesscontextmanager.v1.GcpUserAccessBindingB\x04\xe2\x41\x01\x02"\xc0\x01\n!UpdateGcpUserAccessBindingRequest\x12\x64\n\x17gcp_user_access_binding\x18\x01 \x01(\x0b\x32=.google.identity.accesscontextmanager.v1.GcpUserAccessBindingB\x04\xe2\x41\x01\x02\x12\x35\n\x0bupdate_mask\x18\x02 \x01(\x0b\x32\x1a.google.protobuf.FieldMaskB\x04\xe2\x41\x01\x02"t\n!DeleteGcpUserAccessBindingRequest\x12O\n\x04name\x18\x01 \x01(\tBA\xe2\x41\x01\x02\xfa\x41:\n8accesscontextmanager.googleapis.com/GcpUserAccessBinding"\'\n%GcpUserAccessBindingOperationMetadata"\'\n%AccessContextManagerOperationMetadata*D\n\x0bLevelFormat\x12\x1c\n\x18LEVEL_FORMAT_UNSPECIFIED\x10\x00\x12\x0e\n\nAS_DEFINED\x10\x01\x12\x07\n\x03\x43\x45L\x10\x02\x32\xf1\x32\n\x14\x41\x63\x63\x65ssContextManager\x12\xb9\x01\n\x12ListAccessPolicies\x12\x42.google.identity.accesscontextmanager.v1.ListAccessPoliciesRequest\x1a\x43.google.identity.accesscontextmanager.v1.ListAccessPoliciesResponse"\x1a\x82\xd3\xe4\x93\x02\x14\x12\x12/v1/accessPolicies\x12\xb5\x01\n\x0fGetAccessPolicy\x12?.google.identity.accesscontextmanager.v1.GetAccessPolicyRequest\x1a\x35.google.identity.accesscontextmanager.v1.AccessPolicy"*\xda\x41\x04name\x82\xd3\xe4\x93\x02\x1d\x12\x1b/v1/{name=accessPolicies/*}\x12\xc1\x01\n\x12\x43reateAccessPolicy\x12\x35.google.identity.accesscontextmanager.v1.AccessPolicy\x1a\x1d.google.longrunning.Operation"U\xca\x41\x35\n\x0c\x41\x63\x63\x65ssPolicy\x12%AccessContextManagerOperationMetadata\x82\xd3\xe4\x93\x02\x17"\x12/v1/accessPolicies:\x01*\x12\xf8\x01\n\x12UpdateAccessPolicy\x12\x42.google.identity.accesscontextmanager.v1.UpdateAccessPolicyRequest\x1a\x1d.google.longrunning.Operation"\x7f\xca\x41\x35\n\x0c\x41\x63\x63\x65ssPolicy\x12%AccessContextManagerOperationMetadata\xda\x41\x12policy,update_mask\x82\xd3\xe4\x93\x02,2"/v1/{policy.name=accessPolicies/*}:\x06policy\x12\xe4\x01\n\x12\x44\x65leteAccessPolicy\x12\x42.google.identity.accesscontextmanager.v1.DeleteAccessPolicyRequest\x1a\x1d.google.longrunning.Operation"k\xca\x41>\n\x15google.protobuf.Empty\x12%AccessContextManagerOperationMetadata\xda\x41\x04name\x82\xd3\xe4\x93\x02\x1d*\x1b/v1/{name=accessPolicies/*}\x12\xd4\x01\n\x10ListAccessLevels\x12@.google.identity.accesscontextmanager.v1.ListAccessLevelsRequest\x1a\x41.google.identity.accesscontextmanager.v1.ListAccessLevelsResponse";\xda\x41\x06parent\x82\xd3\xe4\x93\x02,\x12*/v1/{parent=accessPolicies/*}/accessLevels\x12\xc1\x01\n\x0eGetAccessLevel\x12>.google.identity.accesscontextmanager.v1.GetAccessLevelRequest\x1a\x34.google.identity.accesscontextmanager.v1.AccessLevel"9\xda\x41\x04name\x82\xd3\xe4\x93\x02,\x12*/v1/{name=accessPolicies/*/accessLevels/*}\x12\x85\x02\n\x11\x43reateAccessLevel\x12\x41.google.identity.accesscontextmanager.v1.CreateAccessLevelRequest\x1a\x1d.google.longrunning.Operation"\x8d\x01\xca\x41\x34\n\x0b\x41\x63\x63\x65ssLevel\x12%AccessContextManagerOperationMetadata\xda\x41\x13parent,access_level\x82\xd3\xe4\x93\x02:"*/v1/{parent=accessPolicies/*}/accessLevels:\x0c\x61\x63\x63\x65ss_level\x12\x97\x02\n\x11UpdateAccessLevel\x12\x41.google.identity.accesscontextmanager.v1.UpdateAccessLevelRequest\x1a\x1d.google.longrunning.Operation"\x9f\x01\xca\x41\x34\n\x0b\x41\x63\x63\x65ssLevel\x12%AccessContextManagerOperationMetadata\xda\x41\x18\x61\x63\x63\x65ss_level,update_mask\x82\xd3\xe4\x93\x02G27/v1/{access_level.name=accessPolicies/*/accessLevels/*}:\x0c\x61\x63\x63\x65ss_level\x12\xf1\x01\n\x11\x44\x65leteAccessLevel\x12\x41.google.identity.accesscontextmanager.v1.DeleteAccessLevelRequest\x1a\x1d.google.longrunning.Operation"z\xca\x41>\n\x15google.protobuf.Empty\x12%AccessContextManagerOperationMetadata\xda\x41\x04name\x82\xd3\xe4\x93\x02,**/v1/{name=accessPolicies/*/accessLevels/*}\x12\x83\x02\n\x13ReplaceAccessLevels\x12\x43.google.identity.accesscontextmanager.v1.ReplaceAccessLevelsRequest\x1a\x1d.google.longrunning.Operation"\x87\x01\xca\x41\x44\n\x1bReplaceAccessLevelsResponse\x12%AccessContextManagerOperationMetadata\x82\xd3\xe4\x93\x02:"5/v1/{parent=accessPolicies/*}/accessLevels:replaceAll:\x01*\x12\xe8\x01\n\x15ListServicePerimeters\x12\x45.google.identity.accesscontextmanager.v1.ListServicePerimetersRequest\x1a\x46.google.identity.accesscontextmanager.v1.ListServicePerimetersResponse"@\xda\x41\x06parent\x82\xd3\xe4\x93\x02\x31\x12//v1/{parent=accessPolicies/*}/servicePerimeters\x12\xd5\x01\n\x13GetServicePerimeter\x12\x43.google.identity.accesscontextmanager.v1.GetServicePerimeterRequest\x1a\x39.google.identity.accesscontextmanager.v1.ServicePerimeter">\xda\x41\x04name\x82\xd3\xe4\x93\x02\x31\x12//v1/{name=accessPolicies/*/servicePerimeters/*}\x12\xa3\x02\n\x16\x43reateServicePerimeter\x12\x46.google.identity.accesscontextmanager.v1.CreateServicePerimeterRequest\x1a\x1d.google.longrunning.Operation"\xa1\x01\xca\x41\x39\n\x10ServicePerimeter\x12%AccessContextManagerOperationMetadata\xda\x41\x18parent,service_perimeter\x82\xd3\xe4\x93\x02\x44"//v1/{parent=accessPolicies/*}/servicePerimeters:\x11service_perimeter\x12\xba\x02\n\x16UpdateServicePerimeter\x12\x46.google.identity.accesscontextmanager.v1.UpdateServicePerimeterRequest\x1a\x1d.google.longrunning.Operation"\xb8\x01\xca\x41\x39\n\x10ServicePerimeter\x12%AccessContextManagerOperationMetadata\xda\x41\x1dservice_perimeter,update_mask\x82\xd3\xe4\x93\x02V2A/v1/{service_perimeter.name=accessPolicies/*/servicePerimeters/*}:\x11service_perimeter\x12\x80\x02\n\x16\x44\x65leteServicePerimeter\x12\x46.google.identity.accesscontextmanager.v1.DeleteServicePerimeterRequest\x1a\x1d.google.longrunning.Operation"\x7f\xca\x41>\n\x15google.protobuf.Empty\x12%AccessContextManagerOperationMetadata\xda\x41\x04name\x82\xd3\xe4\x93\x02\x31*//v1/{name=accessPolicies/*/servicePerimeters/*}\x12\x97\x02\n\x18ReplaceServicePerimeters\x12H.google.identity.accesscontextmanager.v1.ReplaceServicePerimetersRequest\x1a\x1d.google.longrunning.Operation"\x91\x01\xca\x41I\n ReplaceServicePerimetersResponse\x12%AccessContextManagerOperationMetadata\x82\xd3\xe4\x93\x02?":/v1/{parent=accessPolicies/*}/servicePerimeters:replaceAll:\x01*\x12\x90\x02\n\x17\x43ommitServicePerimeters\x12G.google.identity.accesscontextmanager.v1.CommitServicePerimetersRequest\x1a\x1d.google.longrunning.Operation"\x8c\x01\xca\x41H\n\x1f\x43ommitServicePerimetersResponse\x12%AccessContextManagerOperationMetadata\x82\xd3\xe4\x93\x02;"6/v1/{parent=accessPolicies/*}/servicePerimeters:commit:\x01*\x12\xf7\x01\n\x19ListGcpUserAccessBindings\x12I.google.identity.accesscontextmanager.v1.ListGcpUserAccessBindingsRequest\x1aJ.google.identity.accesscontextmanager.v1.ListGcpUserAccessBindingsResponse"C\xda\x41\x06parent\x82\xd3\xe4\x93\x02\x34\x12\x32/v1/{parent=organizations/*}/gcpUserAccessBindings\x12\xe4\x01\n\x17GetGcpUserAccessBinding\x12G.google.identity.accesscontextmanager.v1.GetGcpUserAccessBindingRequest\x1a=.google.identity.accesscontextmanager.v1.GcpUserAccessBinding"A\xda\x41\x04name\x82\xd3\xe4\x93\x02\x34\x12\x32/v1/{name=organizations/*/gcpUserAccessBindings/*}\x12\xbe\x02\n\x1a\x43reateGcpUserAccessBinding\x12J.google.identity.accesscontextmanager.v1.CreateGcpUserAccessBindingRequest\x1a\x1d.google.longrunning.Operation"\xb4\x01\xca\x41=\n\x14GcpUserAccessBinding\x12%GcpUserAccessBindingOperationMetadata\xda\x41\x1eparent,gcp_user_access_binding\x82\xd3\xe4\x93\x02M"2/v1/{parent=organizations/*}/gcpUserAccessBindings:\x17gcp_user_access_binding\x12\xdb\x02\n\x1aUpdateGcpUserAccessBinding\x12J.google.identity.accesscontextmanager.v1.UpdateGcpUserAccessBindingRequest\x1a\x1d.google.longrunning.Operation"\xd1\x01\xca\x41=\n\x14GcpUserAccessBinding\x12%GcpUserAccessBindingOperationMetadata\xda\x41#gcp_user_access_binding,update_mask\x82\xd3\xe4\x93\x02\x65\x32J/v1/{gcp_user_access_binding.name=organizations/*/gcpUserAccessBindings/*}:\x17gcp_user_access_binding\x12\x8c\x02\n\x1a\x44\x65leteGcpUserAccessBinding\x12J.google.identity.accesscontextmanager.v1.DeleteGcpUserAccessBindingRequest\x1a\x1d.google.longrunning.Operation"\x82\x01\xca\x41>\n\x15google.protobuf.Empty\x12%GcpUserAccessBindingOperationMetadata\xda\x41\x04name\x82\xd3\xe4\x93\x02\x34*2/v1/{name=organizations/*/gcpUserAccessBindings/*}\x12\x82\x01\n\x0cSetIamPolicy\x12".google.iam.v1.SetIamPolicyRequest\x1a\x15.google.iam.v1.Policy"7\x82\xd3\xe4\x93\x02\x31",/v1/{resource=accessPolicies/*}:setIamPolicy:\x01*\x12\x82\x01\n\x0cGetIamPolicy\x12".google.iam.v1.GetIamPolicyRequest\x1a\x15.google.iam.v1.Policy"7\x82\xd3\xe4\x93\x02\x31",/v1/{resource=accessPolicies/*}:getIamPolicy:\x01*\x12\xbf\x02\n\x12TestIamPermissions\x12(.google.iam.v1.TestIamPermissionsRequest\x1a).google.iam.v1.TestIamPermissionsResponse"\xd3\x01\x82\xd3\xe4\x93\x02\xcc\x01"2/v1/{resource=accessPolicies/*}:testIamPermissions:\x01*ZF"A/v1/{resource=accessPolicies/*/accessLevels/*}:testIamPermissions:\x01*ZK"F/v1/{resource=accessPolicies/*/servicePerimeters/*}:testIamPermissions:\x01*\x1aW\xca\x41#accesscontextmanager.googleapis.com\xd2\x41.https://www.googleapis.com/auth/cloud-platformB\xb0\x02\n+com.google.identity.accesscontextmanager.v1B\x19\x41\x63\x63\x65ssContextManagerProtoP\x01Z\\cloud.google.com/go/accesscontextmanager/apiv1/accesscontextmanagerpb;accesscontextmanagerpb\xa2\x02\x04GACM\xaa\x02\'Google.Identity.AccessContextManager.V1\xca\x02\'Google\\Identity\\AccessContextManager\\V1\xea\x02*Google::Identity::AccessContextManager::V1b\x06proto3' ) _globals = globals() @@ -85,43 +85,43 @@ _globals["_LISTACCESSPOLICIESREQUEST"].fields_by_name[ "parent" ]._serialized_options = ( - b"\340A\002\372A2\n0cloudresourcemanager.googleapis.com/Organization" + b"\342A\001\002\372A2\n0cloudresourcemanager.googleapis.com/Organization" ) _globals["_GETACCESSPOLICYREQUEST"].fields_by_name["name"]._loaded_options = None _globals["_GETACCESSPOLICYREQUEST"].fields_by_name[ "name" ]._serialized_options = ( - b"\340A\002\372A2\n0accesscontextmanager.googleapis.com/AccessPolicy" + b"\342A\001\002\372A2\n0accesscontextmanager.googleapis.com/AccessPolicy" ) _globals["_UPDATEACCESSPOLICYREQUEST"].fields_by_name[ "policy" ]._loaded_options = None _globals["_UPDATEACCESSPOLICYREQUEST"].fields_by_name[ "policy" - ]._serialized_options = b"\340A\002" + ]._serialized_options = b"\342A\001\002" _globals["_UPDATEACCESSPOLICYREQUEST"].fields_by_name[ "update_mask" ]._loaded_options = None _globals["_UPDATEACCESSPOLICYREQUEST"].fields_by_name[ "update_mask" - ]._serialized_options = b"\340A\002" + ]._serialized_options = b"\342A\001\002" _globals["_DELETEACCESSPOLICYREQUEST"].fields_by_name["name"]._loaded_options = None _globals["_DELETEACCESSPOLICYREQUEST"].fields_by_name[ "name" ]._serialized_options = ( - b"\340A\002\372A2\n0accesscontextmanager.googleapis.com/AccessPolicy" + b"\342A\001\002\372A2\n0accesscontextmanager.googleapis.com/AccessPolicy" ) _globals["_LISTACCESSLEVELSREQUEST"].fields_by_name["parent"]._loaded_options = None _globals["_LISTACCESSLEVELSREQUEST"].fields_by_name[ "parent" ]._serialized_options = ( - b"\340A\002\372A1\022/accesscontextmanager.googleapis.com/AccessLevel" + b"\342A\001\002\372A1\022/accesscontextmanager.googleapis.com/AccessLevel" ) _globals["_GETACCESSLEVELREQUEST"].fields_by_name["name"]._loaded_options = None _globals["_GETACCESSLEVELREQUEST"].fields_by_name[ "name" ]._serialized_options = ( - b"\340A\002\372A1\n/accesscontextmanager.googleapis.com/AccessLevel" + b"\342A\001\002\372A1\n/accesscontextmanager.googleapis.com/AccessLevel" ) _globals["_CREATEACCESSLEVELREQUEST"].fields_by_name[ "parent" @@ -129,31 +129,31 @@ _globals["_CREATEACCESSLEVELREQUEST"].fields_by_name[ "parent" ]._serialized_options = ( - b"\340A\002\372A1\022/accesscontextmanager.googleapis.com/AccessLevel" + b"\342A\001\002\372A1\022/accesscontextmanager.googleapis.com/AccessLevel" ) _globals["_CREATEACCESSLEVELREQUEST"].fields_by_name[ "access_level" ]._loaded_options = None _globals["_CREATEACCESSLEVELREQUEST"].fields_by_name[ "access_level" - ]._serialized_options = b"\340A\002" + ]._serialized_options = b"\342A\001\002" _globals["_UPDATEACCESSLEVELREQUEST"].fields_by_name[ "access_level" ]._loaded_options = None _globals["_UPDATEACCESSLEVELREQUEST"].fields_by_name[ "access_level" - ]._serialized_options = b"\340A\002" + ]._serialized_options = b"\342A\001\002" _globals["_UPDATEACCESSLEVELREQUEST"].fields_by_name[ "update_mask" ]._loaded_options = None _globals["_UPDATEACCESSLEVELREQUEST"].fields_by_name[ "update_mask" - ]._serialized_options = b"\340A\002" + ]._serialized_options = b"\342A\001\002" _globals["_DELETEACCESSLEVELREQUEST"].fields_by_name["name"]._loaded_options = None _globals["_DELETEACCESSLEVELREQUEST"].fields_by_name[ "name" ]._serialized_options = ( - b"\340A\002\372A1\n/accesscontextmanager.googleapis.com/AccessLevel" + b"\342A\001\002\372A1\n/accesscontextmanager.googleapis.com/AccessLevel" ) _globals["_REPLACEACCESSLEVELSREQUEST"].fields_by_name[ "parent" @@ -161,21 +161,21 @@ _globals["_REPLACEACCESSLEVELSREQUEST"].fields_by_name[ "parent" ]._serialized_options = ( - b"\340A\002\372A1\022/accesscontextmanager.googleapis.com/AccessLevel" + b"\342A\001\002\372A1\022/accesscontextmanager.googleapis.com/AccessLevel" ) _globals["_REPLACEACCESSLEVELSREQUEST"].fields_by_name[ "access_levels" ]._loaded_options = None _globals["_REPLACEACCESSLEVELSREQUEST"].fields_by_name[ "access_levels" - ]._serialized_options = b"\340A\002" + ]._serialized_options = b"\342A\001\002" _globals["_LISTSERVICEPERIMETERSREQUEST"].fields_by_name[ "parent" ]._loaded_options = None _globals["_LISTSERVICEPERIMETERSREQUEST"].fields_by_name[ "parent" ]._serialized_options = ( - b"\340A\002\372A6\0224accesscontextmanager.googleapis.com/ServicePerimeter" + b"\342A\001\002\372A6\0224accesscontextmanager.googleapis.com/ServicePerimeter" ) _globals["_GETSERVICEPERIMETERREQUEST"].fields_by_name[ "name" @@ -183,7 +183,7 @@ _globals["_GETSERVICEPERIMETERREQUEST"].fields_by_name[ "name" ]._serialized_options = ( - b"\340A\002\372A6\n4accesscontextmanager.googleapis.com/ServicePerimeter" + b"\342A\001\002\372A6\n4accesscontextmanager.googleapis.com/ServicePerimeter" ) _globals["_CREATESERVICEPERIMETERREQUEST"].fields_by_name[ "parent" @@ -191,33 +191,33 @@ _globals["_CREATESERVICEPERIMETERREQUEST"].fields_by_name[ "parent" ]._serialized_options = ( - b"\340A\002\372A6\0224accesscontextmanager.googleapis.com/ServicePerimeter" + b"\342A\001\002\372A6\0224accesscontextmanager.googleapis.com/ServicePerimeter" ) _globals["_CREATESERVICEPERIMETERREQUEST"].fields_by_name[ "service_perimeter" ]._loaded_options = None _globals["_CREATESERVICEPERIMETERREQUEST"].fields_by_name[ "service_perimeter" - ]._serialized_options = b"\340A\002" + ]._serialized_options = b"\342A\001\002" _globals["_UPDATESERVICEPERIMETERREQUEST"].fields_by_name[ "service_perimeter" ]._loaded_options = None _globals["_UPDATESERVICEPERIMETERREQUEST"].fields_by_name[ "service_perimeter" - ]._serialized_options = b"\340A\002" + ]._serialized_options = b"\342A\001\002" _globals["_UPDATESERVICEPERIMETERREQUEST"].fields_by_name[ "update_mask" ]._loaded_options = None _globals["_UPDATESERVICEPERIMETERREQUEST"].fields_by_name[ "update_mask" - ]._serialized_options = b"\340A\002" + ]._serialized_options = b"\342A\001\002" _globals["_DELETESERVICEPERIMETERREQUEST"].fields_by_name[ "name" ]._loaded_options = None _globals["_DELETESERVICEPERIMETERREQUEST"].fields_by_name[ "name" ]._serialized_options = ( - b"\340A\002\372A6\n4accesscontextmanager.googleapis.com/ServicePerimeter" + b"\342A\001\002\372A6\n4accesscontextmanager.googleapis.com/ServicePerimeter" ) _globals["_REPLACESERVICEPERIMETERSREQUEST"].fields_by_name[ "parent" @@ -225,21 +225,21 @@ _globals["_REPLACESERVICEPERIMETERSREQUEST"].fields_by_name[ "parent" ]._serialized_options = ( - b"\340A\002\372A6\0224accesscontextmanager.googleapis.com/ServicePerimeter" + b"\342A\001\002\372A6\0224accesscontextmanager.googleapis.com/ServicePerimeter" ) _globals["_REPLACESERVICEPERIMETERSREQUEST"].fields_by_name[ "service_perimeters" ]._loaded_options = None _globals["_REPLACESERVICEPERIMETERSREQUEST"].fields_by_name[ "service_perimeters" - ]._serialized_options = b"\340A\002" + ]._serialized_options = b"\342A\001\002" _globals["_COMMITSERVICEPERIMETERSREQUEST"].fields_by_name[ "parent" ]._loaded_options = None _globals["_COMMITSERVICEPERIMETERSREQUEST"].fields_by_name[ "parent" ]._serialized_options = ( - b"\340A\002\372A6\0224accesscontextmanager.googleapis.com/ServicePerimeter" + b"\342A\001\002\372A6\0224accesscontextmanager.googleapis.com/ServicePerimeter" ) _globals["_LISTGCPUSERACCESSBINDINGSREQUEST"].fields_by_name[ "parent" @@ -247,62 +247,58 @@ _globals["_LISTGCPUSERACCESSBINDINGSREQUEST"].fields_by_name[ "parent" ]._serialized_options = ( - b"\340A\002\372A2\n0cloudresourcemanager.googleapis.com/Organization" + b"\342A\001\002\372A2\n0cloudresourcemanager.googleapis.com/Organization" ) _globals["_LISTGCPUSERACCESSBINDINGSREQUEST"].fields_by_name[ "page_size" ]._loaded_options = None _globals["_LISTGCPUSERACCESSBINDINGSREQUEST"].fields_by_name[ "page_size" - ]._serialized_options = b"\340A\001" + ]._serialized_options = b"\342A\001\001" _globals["_LISTGCPUSERACCESSBINDINGSREQUEST"].fields_by_name[ "page_token" ]._loaded_options = None _globals["_LISTGCPUSERACCESSBINDINGSREQUEST"].fields_by_name[ "page_token" - ]._serialized_options = b"\340A\001" + ]._serialized_options = b"\342A\001\001" _globals["_GETGCPUSERACCESSBINDINGREQUEST"].fields_by_name[ "name" ]._loaded_options = None _globals["_GETGCPUSERACCESSBINDINGREQUEST"].fields_by_name[ "name" - ]._serialized_options = ( - b"\340A\002\372A:\n8accesscontextmanager.googleapis.com/GcpUserAccessBinding" - ) + ]._serialized_options = b"\342A\001\002\372A:\n8accesscontextmanager.googleapis.com/GcpUserAccessBinding" _globals["_CREATEGCPUSERACCESSBINDINGREQUEST"].fields_by_name[ "parent" ]._loaded_options = None _globals["_CREATEGCPUSERACCESSBINDINGREQUEST"].fields_by_name[ "parent" ]._serialized_options = ( - b"\340A\002\372A2\n0cloudresourcemanager.googleapis.com/Organization" + b"\342A\001\002\372A2\n0cloudresourcemanager.googleapis.com/Organization" ) _globals["_CREATEGCPUSERACCESSBINDINGREQUEST"].fields_by_name[ "gcp_user_access_binding" ]._loaded_options = None _globals["_CREATEGCPUSERACCESSBINDINGREQUEST"].fields_by_name[ "gcp_user_access_binding" - ]._serialized_options = b"\340A\002" + ]._serialized_options = b"\342A\001\002" _globals["_UPDATEGCPUSERACCESSBINDINGREQUEST"].fields_by_name[ "gcp_user_access_binding" ]._loaded_options = None _globals["_UPDATEGCPUSERACCESSBINDINGREQUEST"].fields_by_name[ "gcp_user_access_binding" - ]._serialized_options = b"\340A\002" + ]._serialized_options = b"\342A\001\002" _globals["_UPDATEGCPUSERACCESSBINDINGREQUEST"].fields_by_name[ "update_mask" ]._loaded_options = None _globals["_UPDATEGCPUSERACCESSBINDINGREQUEST"].fields_by_name[ "update_mask" - ]._serialized_options = b"\340A\002" + ]._serialized_options = b"\342A\001\002" _globals["_DELETEGCPUSERACCESSBINDINGREQUEST"].fields_by_name[ "name" ]._loaded_options = None _globals["_DELETEGCPUSERACCESSBINDINGREQUEST"].fields_by_name[ "name" - ]._serialized_options = ( - b"\340A\002\372A:\n8accesscontextmanager.googleapis.com/GcpUserAccessBinding" - ) + ]._serialized_options = b"\342A\001\002\372A:\n8accesscontextmanager.googleapis.com/GcpUserAccessBinding" _globals["_ACCESSCONTEXTMANAGER"]._loaded_options = None _globals[ "_ACCESSCONTEXTMANAGER" @@ -469,70 +465,70 @@ _globals["_ACCESSCONTEXTMANAGER"].methods_by_name[ "TestIamPermissions" ]._serialized_options = b'\202\323\344\223\002\314\001"2/v1/{resource=accessPolicies/*}:testIamPermissions:\001*ZF"A/v1/{resource=accessPolicies/*/accessLevels/*}:testIamPermissions:\001*ZK"F/v1/{resource=accessPolicies/*/servicePerimeters/*}:testIamPermissions:\001*' - _globals["_LEVELFORMAT"]._serialized_start = 5065 - _globals["_LEVELFORMAT"]._serialized_end = 5133 + _globals["_LEVELFORMAT"]._serialized_start = 5098 + _globals["_LEVELFORMAT"]._serialized_end = 5166 _globals["_LISTACCESSPOLICIESREQUEST"]._serialized_start = 617 - _globals["_LISTACCESSPOLICIESREQUEST"]._serialized_end = 757 - _globals["_LISTACCESSPOLICIESRESPONSE"]._serialized_start = 760 - _globals["_LISTACCESSPOLICIESRESPONSE"]._serialized_end = 893 - _globals["_GETACCESSPOLICYREQUEST"]._serialized_start = 895 - _globals["_GETACCESSPOLICYREQUEST"]._serialized_end = 991 - _globals["_UPDATEACCESSPOLICYREQUEST"]._serialized_start = 994 - _globals["_UPDATEACCESSPOLICYREQUEST"]._serialized_end = 1151 - _globals["_DELETEACCESSPOLICYREQUEST"]._serialized_start = 1153 - _globals["_DELETEACCESSPOLICYREQUEST"]._serialized_end = 1252 - _globals["_LISTACCESSLEVELSREQUEST"]._serialized_start = 1255 - _globals["_LISTACCESSLEVELSREQUEST"]._serialized_end = 1475 - _globals["_LISTACCESSLEVELSRESPONSE"]._serialized_start = 1478 - _globals["_LISTACCESSLEVELSRESPONSE"]._serialized_end = 1606 - _globals["_GETACCESSLEVELREQUEST"]._serialized_start = 1609 - _globals["_GETACCESSLEVELREQUEST"]._serialized_end = 1786 - _globals["_CREATEACCESSLEVELREQUEST"]._serialized_start = 1789 - _globals["_CREATEACCESSLEVELREQUEST"]._serialized_end = 1969 - _globals["_UPDATEACCESSLEVELREQUEST"]._serialized_start = 1972 - _globals["_UPDATEACCESSLEVELREQUEST"]._serialized_end = 2133 - _globals["_DELETEACCESSLEVELREQUEST"]._serialized_start = 2135 - _globals["_DELETEACCESSLEVELREQUEST"]._serialized_end = 2232 - _globals["_REPLACEACCESSLEVELSREQUEST"]._serialized_start = 2235 - _globals["_REPLACEACCESSLEVELSREQUEST"]._serialized_end = 2432 - _globals["_REPLACEACCESSLEVELSRESPONSE"]._serialized_start = 2434 - _globals["_REPLACEACCESSLEVELSRESPONSE"]._serialized_end = 2540 - _globals["_LISTSERVICEPERIMETERSREQUEST"]._serialized_start = 2543 - _globals["_LISTSERVICEPERIMETERSREQUEST"]._serialized_end = 2690 - _globals["_LISTSERVICEPERIMETERSRESPONSE"]._serialized_start = 2693 - _globals["_LISTSERVICEPERIMETERSRESPONSE"]._serialized_end = 2836 - _globals["_GETSERVICEPERIMETERREQUEST"]._serialized_start = 2838 - _globals["_GETSERVICEPERIMETERREQUEST"]._serialized_end = 2942 - _globals["_CREATESERVICEPERIMETERREQUEST"]._serialized_start = 2945 - _globals["_CREATESERVICEPERIMETERREQUEST"]._serialized_end = 3145 - _globals["_UPDATESERVICEPERIMETERREQUEST"]._serialized_start = 3148 - _globals["_UPDATESERVICEPERIMETERREQUEST"]._serialized_end = 3324 - _globals["_DELETESERVICEPERIMETERREQUEST"]._serialized_start = 3326 - _globals["_DELETESERVICEPERIMETERREQUEST"]._serialized_end = 3433 - _globals["_REPLACESERVICEPERIMETERSREQUEST"]._serialized_start = 3436 - _globals["_REPLACESERVICEPERIMETERSREQUEST"]._serialized_end = 3653 - _globals["_REPLACESERVICEPERIMETERSRESPONSE"]._serialized_start = 3655 - _globals["_REPLACESERVICEPERIMETERSRESPONSE"]._serialized_end = 3776 - _globals["_COMMITSERVICEPERIMETERSREQUEST"]._serialized_start = 3778 - _globals["_COMMITSERVICEPERIMETERSREQUEST"]._serialized_end = 3902 - _globals["_COMMITSERVICEPERIMETERSRESPONSE"]._serialized_start = 3904 - _globals["_COMMITSERVICEPERIMETERSRESPONSE"]._serialized_end = 4024 - _globals["_LISTGCPUSERACCESSBINDINGSREQUEST"]._serialized_start = 4027 - _globals["_LISTGCPUSERACCESSBINDINGSREQUEST"]._serialized_end = 4184 - _globals["_LISTGCPUSERACCESSBINDINGSRESPONSE"]._serialized_start = 4187 - _globals["_LISTGCPUSERACCESSBINDINGSRESPONSE"]._serialized_end = 4344 - _globals["_GETGCPUSERACCESSBINDINGREQUEST"]._serialized_start = 4346 - _globals["_GETGCPUSERACCESSBINDINGREQUEST"]._serialized_end = 4458 - _globals["_CREATEGCPUSERACCESSBINDINGREQUEST"]._serialized_start = 4461 - _globals["_CREATEGCPUSERACCESSBINDINGREQUEST"]._serialized_end = 4671 - _globals["_UPDATEGCPUSERACCESSBINDINGREQUEST"]._serialized_start = 4674 - _globals["_UPDATEGCPUSERACCESSBINDINGREQUEST"]._serialized_end = 4864 - _globals["_DELETEGCPUSERACCESSBINDINGREQUEST"]._serialized_start = 4866 - _globals["_DELETEGCPUSERACCESSBINDINGREQUEST"]._serialized_end = 4981 - _globals["_GCPUSERACCESSBINDINGOPERATIONMETADATA"]._serialized_start = 4983 - _globals["_GCPUSERACCESSBINDINGOPERATIONMETADATA"]._serialized_end = 5022 - _globals["_ACCESSCONTEXTMANAGEROPERATIONMETADATA"]._serialized_start = 5024 - _globals["_ACCESSCONTEXTMANAGEROPERATIONMETADATA"]._serialized_end = 5063 - _globals["_ACCESSCONTEXTMANAGER"]._serialized_start = 5136 - _globals["_ACCESSCONTEXTMANAGER"]._serialized_end = 11649 + _globals["_LISTACCESSPOLICIESREQUEST"]._serialized_end = 758 + _globals["_LISTACCESSPOLICIESRESPONSE"]._serialized_start = 761 + _globals["_LISTACCESSPOLICIESRESPONSE"]._serialized_end = 894 + _globals["_GETACCESSPOLICYREQUEST"]._serialized_start = 896 + _globals["_GETACCESSPOLICYREQUEST"]._serialized_end = 993 + _globals["_UPDATEACCESSPOLICYREQUEST"]._serialized_start = 996 + _globals["_UPDATEACCESSPOLICYREQUEST"]._serialized_end = 1155 + _globals["_DELETEACCESSPOLICYREQUEST"]._serialized_start = 1157 + _globals["_DELETEACCESSPOLICYREQUEST"]._serialized_end = 1257 + _globals["_LISTACCESSLEVELSREQUEST"]._serialized_start = 1260 + _globals["_LISTACCESSLEVELSREQUEST"]._serialized_end = 1481 + _globals["_LISTACCESSLEVELSRESPONSE"]._serialized_start = 1484 + _globals["_LISTACCESSLEVELSRESPONSE"]._serialized_end = 1612 + _globals["_GETACCESSLEVELREQUEST"]._serialized_start = 1615 + _globals["_GETACCESSLEVELREQUEST"]._serialized_end = 1793 + _globals["_CREATEACCESSLEVELREQUEST"]._serialized_start = 1796 + _globals["_CREATEACCESSLEVELREQUEST"]._serialized_end = 1978 + _globals["_UPDATEACCESSLEVELREQUEST"]._serialized_start = 1981 + _globals["_UPDATEACCESSLEVELREQUEST"]._serialized_end = 2144 + _globals["_DELETEACCESSLEVELREQUEST"]._serialized_start = 2146 + _globals["_DELETEACCESSLEVELREQUEST"]._serialized_end = 2244 + _globals["_REPLACEACCESSLEVELSREQUEST"]._serialized_start = 2247 + _globals["_REPLACEACCESSLEVELSREQUEST"]._serialized_end = 2446 + _globals["_REPLACEACCESSLEVELSRESPONSE"]._serialized_start = 2448 + _globals["_REPLACEACCESSLEVELSRESPONSE"]._serialized_end = 2554 + _globals["_LISTSERVICEPERIMETERSREQUEST"]._serialized_start = 2557 + _globals["_LISTSERVICEPERIMETERSREQUEST"]._serialized_end = 2705 + _globals["_LISTSERVICEPERIMETERSRESPONSE"]._serialized_start = 2708 + _globals["_LISTSERVICEPERIMETERSRESPONSE"]._serialized_end = 2851 + _globals["_GETSERVICEPERIMETERREQUEST"]._serialized_start = 2853 + _globals["_GETSERVICEPERIMETERREQUEST"]._serialized_end = 2958 + _globals["_CREATESERVICEPERIMETERREQUEST"]._serialized_start = 2961 + _globals["_CREATESERVICEPERIMETERREQUEST"]._serialized_end = 3163 + _globals["_UPDATESERVICEPERIMETERREQUEST"]._serialized_start = 3166 + _globals["_UPDATESERVICEPERIMETERREQUEST"]._serialized_end = 3344 + _globals["_DELETESERVICEPERIMETERREQUEST"]._serialized_start = 3346 + _globals["_DELETESERVICEPERIMETERREQUEST"]._serialized_end = 3454 + _globals["_REPLACESERVICEPERIMETERSREQUEST"]._serialized_start = 3457 + _globals["_REPLACESERVICEPERIMETERSREQUEST"]._serialized_end = 3676 + _globals["_REPLACESERVICEPERIMETERSRESPONSE"]._serialized_start = 3678 + _globals["_REPLACESERVICEPERIMETERSRESPONSE"]._serialized_end = 3799 + _globals["_COMMITSERVICEPERIMETERSREQUEST"]._serialized_start = 3801 + _globals["_COMMITSERVICEPERIMETERSREQUEST"]._serialized_end = 3926 + _globals["_COMMITSERVICEPERIMETERSRESPONSE"]._serialized_start = 3928 + _globals["_COMMITSERVICEPERIMETERSRESPONSE"]._serialized_end = 4048 + _globals["_LISTGCPUSERACCESSBINDINGSREQUEST"]._serialized_start = 4051 + _globals["_LISTGCPUSERACCESSBINDINGSREQUEST"]._serialized_end = 4211 + _globals["_LISTGCPUSERACCESSBINDINGSRESPONSE"]._serialized_start = 4214 + _globals["_LISTGCPUSERACCESSBINDINGSRESPONSE"]._serialized_end = 4371 + _globals["_GETGCPUSERACCESSBINDINGREQUEST"]._serialized_start = 4373 + _globals["_GETGCPUSERACCESSBINDINGREQUEST"]._serialized_end = 4486 + _globals["_CREATEGCPUSERACCESSBINDINGREQUEST"]._serialized_start = 4489 + _globals["_CREATEGCPUSERACCESSBINDINGREQUEST"]._serialized_end = 4701 + _globals["_UPDATEGCPUSERACCESSBINDINGREQUEST"]._serialized_start = 4704 + _globals["_UPDATEGCPUSERACCESSBINDINGREQUEST"]._serialized_end = 4896 + _globals["_DELETEGCPUSERACCESSBINDINGREQUEST"]._serialized_start = 4898 + _globals["_DELETEGCPUSERACCESSBINDINGREQUEST"]._serialized_end = 5014 + _globals["_GCPUSERACCESSBINDINGOPERATIONMETADATA"]._serialized_start = 5016 + _globals["_GCPUSERACCESSBINDINGOPERATIONMETADATA"]._serialized_end = 5055 + _globals["_ACCESSCONTEXTMANAGEROPERATIONMETADATA"]._serialized_start = 5057 + _globals["_ACCESSCONTEXTMANAGEROPERATIONMETADATA"]._serialized_end = 5096 + _globals["_ACCESSCONTEXTMANAGER"]._serialized_start = 5169 + _globals["_ACCESSCONTEXTMANAGER"]._serialized_end = 11682 # @@protoc_insertion_point(module_scope) diff --git a/packages/google-cloud-access-context-manager/google/identity/accesscontextmanager/v1/gcp_user_access_binding_pb2.py b/packages/google-cloud-access-context-manager/google/identity/accesscontextmanager/v1/gcp_user_access_binding_pb2.py index d8ca3a02f80b..7ad5cc187020 100644 --- a/packages/google-cloud-access-context-manager/google/identity/accesscontextmanager/v1/gcp_user_access_binding_pb2.py +++ b/packages/google-cloud-access-context-manager/google/identity/accesscontextmanager/v1/gcp_user_access_binding_pb2.py @@ -43,7 +43,7 @@ from google.api import resource_pb2 as google_dot_api_dot_resource__pb2 DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile( - b"\nEgoogle/identity/accesscontextmanager/v1/gcp_user_access_binding.proto\x12'google.identity.accesscontextmanager.v1\x1a\x1fgoogle/api/field_behavior.proto\x1a\x19google/api/resource.proto\"\xa3\x02\n\x14GcpUserAccessBinding\x12\x11\n\x04name\x18\x01 \x01(\tB\x03\xe0\x41\x05\x12\x19\n\tgroup_key\x18\x02 \x01(\tB\x06\xe0\x41\x02\xe0\x41\x05\x12N\n\raccess_levels\x18\x03 \x03(\tB7\xe0\x41\x02\xfa\x41\x31\n/accesscontextmanager.googleapis.com/AccessLevel:\x8c\x01\xea\x41\x88\x01\n8accesscontextmanager.googleapis.com/GcpUserAccessBinding\x12Lorganizations/{organization}/gcpUserAccessBindings/{gcp_user_access_binding}B\xb0\x02\n+com.google.identity.accesscontextmanager.v1B\x19GcpUserAccessBindingProtoP\x01Z\\cloud.google.com/go/accesscontextmanager/apiv1/accesscontextmanagerpb;accesscontextmanagerpb\xa2\x02\x04GACM\xaa\x02'Google.Identity.AccessContextManager.V1\xca\x02'Google\\Identity\\AccessContextManager\\V1\xea\x02*Google::Identity::AccessContextManager::V1b\x06proto3" + b"\nEgoogle/identity/accesscontextmanager/v1/gcp_user_access_binding.proto\x12'google.identity.accesscontextmanager.v1\x1a\x1fgoogle/api/field_behavior.proto\x1a\x19google/api/resource.proto\"\xa4\x02\n\x14GcpUserAccessBinding\x12\x12\n\x04name\x18\x01 \x01(\tB\x04\xe2\x41\x01\x05\x12\x18\n\tgroup_key\x18\x02 \x01(\tB\x05\xe2\x41\x02\x02\x05\x12O\n\raccess_levels\x18\x03 \x03(\tB8\xe2\x41\x01\x02\xfa\x41\x31\n/accesscontextmanager.googleapis.com/AccessLevel:\x8c\x01\xea\x41\x88\x01\n8accesscontextmanager.googleapis.com/GcpUserAccessBinding\x12Lorganizations/{organization}/gcpUserAccessBindings/{gcp_user_access_binding}B\xb0\x02\n+com.google.identity.accesscontextmanager.v1B\x19GcpUserAccessBindingProtoP\x01Z\\cloud.google.com/go/accesscontextmanager/apiv1/accesscontextmanagerpb;accesscontextmanagerpb\xa2\x02\x04GACM\xaa\x02'Google.Identity.AccessContextManager.V1\xca\x02'Google\\Identity\\AccessContextManager\\V1\xea\x02*Google::Identity::AccessContextManager::V1b\x06proto3" ) _globals = globals() @@ -61,23 +61,23 @@ _globals["_GCPUSERACCESSBINDING"].fields_by_name["name"]._loaded_options = None _globals["_GCPUSERACCESSBINDING"].fields_by_name[ "name" - ]._serialized_options = b"\340A\005" + ]._serialized_options = b"\342A\001\005" _globals["_GCPUSERACCESSBINDING"].fields_by_name["group_key"]._loaded_options = None _globals["_GCPUSERACCESSBINDING"].fields_by_name[ "group_key" - ]._serialized_options = b"\340A\002\340A\005" + ]._serialized_options = b"\342A\002\002\005" _globals["_GCPUSERACCESSBINDING"].fields_by_name[ "access_levels" ]._loaded_options = None _globals["_GCPUSERACCESSBINDING"].fields_by_name[ "access_levels" ]._serialized_options = ( - b"\340A\002\372A1\n/accesscontextmanager.googleapis.com/AccessLevel" + b"\342A\001\002\372A1\n/accesscontextmanager.googleapis.com/AccessLevel" ) _globals["_GCPUSERACCESSBINDING"]._loaded_options = None _globals[ "_GCPUSERACCESSBINDING" ]._serialized_options = b"\352A\210\001\n8accesscontextmanager.googleapis.com/GcpUserAccessBinding\022Lorganizations/{organization}/gcpUserAccessBindings/{gcp_user_access_binding}" _globals["_GCPUSERACCESSBINDING"]._serialized_start = 175 - _globals["_GCPUSERACCESSBINDING"]._serialized_end = 466 + _globals["_GCPUSERACCESSBINDING"]._serialized_end = 467 # @@protoc_insertion_point(module_scope) diff --git a/packages/google-cloud-audit-log/google/cloud/audit/audit_log_pb2.py b/packages/google-cloud-audit-log/google/cloud/audit/audit_log_pb2.py index 3f8a14d1fcf5..655653c67f1a 100644 --- a/packages/google-cloud-audit-log/google/cloud/audit/audit_log_pb2.py +++ b/packages/google-cloud-audit-log/google/cloud/audit/audit_log_pb2.py @@ -43,7 +43,7 @@ ) DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile( - b'\n"google/cloud/audit/audit_log.proto\x12\x12google.cloud.audit\x1a\x1fgoogle/api/field_behavior.proto\x1a\x19google/protobuf/any.proto\x1a\x1cgoogle/protobuf/struct.proto\x1a*google/rpc/context/attribute_context.proto\x1a\x17google/rpc/status.proto"\xc6\x05\n\x08\x41uditLog\x12\x14\n\x0cservice_name\x18\x07 \x01(\t\x12\x13\n\x0bmethod_name\x18\x08 \x01(\t\x12\x15\n\rresource_name\x18\x0b \x01(\t\x12?\n\x11resource_location\x18\x14 \x01(\x0b\x32$.google.cloud.audit.ResourceLocation\x12\x38\n\x17resource_original_state\x18\x13 \x01(\x0b\x32\x17.google.protobuf.Struct\x12\x1a\n\x12num_response_items\x18\x0c \x01(\x03\x12"\n\x06status\x18\x02 \x01(\x0b\x32\x12.google.rpc.Status\x12\x43\n\x13\x61uthentication_info\x18\x03 \x01(\x0b\x32&.google.cloud.audit.AuthenticationInfo\x12\x41\n\x12\x61uthorization_info\x18\t \x03(\x0b\x32%.google.cloud.audit.AuthorizationInfo\x12\x46\n\x15policy_violation_info\x18\x19 \x01(\x0b\x32\'.google.cloud.audit.PolicyViolationInfo\x12=\n\x10request_metadata\x18\x04 \x01(\x0b\x32#.google.cloud.audit.RequestMetadata\x12(\n\x07request\x18\x10 \x01(\x0b\x32\x17.google.protobuf.Struct\x12)\n\x08response\x18\x11 \x01(\x0b\x32\x17.google.protobuf.Struct\x12)\n\x08metadata\x18\x12 \x01(\x0b\x32\x17.google.protobuf.Struct\x12.\n\x0cservice_data\x18\x0f \x01(\x0b\x32\x14.google.protobuf.AnyB\x02\x18\x01"\x99\x02\n\x12\x41uthenticationInfo\x12\x17\n\x0fprincipal_email\x18\x01 \x01(\t\x12\x1a\n\x12\x61uthority_selector\x18\x02 \x01(\t\x12\x36\n\x15third_party_principal\x18\x04 \x01(\x0b\x32\x17.google.protobuf.Struct\x12 \n\x18service_account_key_name\x18\x05 \x01(\t\x12Y\n\x1fservice_account_delegation_info\x18\x06 \x03(\x0b\x32\x30.google.cloud.audit.ServiceAccountDelegationInfo\x12\x19\n\x11principal_subject\x18\x08 \x01(\t"\xd8\x02\n\x11\x41uthorizationInfo\x12\x10\n\x08resource\x18\x01 \x01(\t\x12\x12\n\npermission\x18\x02 \x01(\t\x12\x0f\n\x07granted\x18\x03 \x01(\x08\x12J\n\x13resource_attributes\x18\x05 \x01(\x0b\x32-.google.rpc.context.AttributeContext.Resource\x12M\n\x0fpermission_type\x18\x07 \x01(\x0e\x32\x34.google.cloud.audit.AuthorizationInfo.PermissionType"q\n\x0ePermissionType\x12\x1f\n\x1bPERMISSION_TYPE_UNSPECIFIED\x10\x00\x12\x0e\n\nADMIN_READ\x10\x01\x12\x0f\n\x0b\x41\x44MIN_WRITE\x10\x02\x12\r\n\tDATA_READ\x10\x03\x12\x0e\n\nDATA_WRITE\x10\x04"\xf5\x01\n\x0fRequestMetadata\x12\x11\n\tcaller_ip\x18\x01 \x01(\t\x12"\n\x1a\x63\x61ller_supplied_user_agent\x18\x02 \x01(\t\x12\x16\n\x0e\x63\x61ller_network\x18\x03 \x01(\t\x12H\n\x12request_attributes\x18\x07 \x01(\x0b\x32,.google.rpc.context.AttributeContext.Request\x12I\n\x16\x64\x65stination_attributes\x18\x08 \x01(\x0b\x32).google.rpc.context.AttributeContext.Peer"I\n\x10ResourceLocation\x12\x19\n\x11\x63urrent_locations\x18\x01 \x03(\t\x12\x1a\n\x12original_locations\x18\x02 \x03(\t"\xc3\x03\n\x1cServiceAccountDelegationInfo\x12\x19\n\x11principal_subject\x18\x03 \x01(\t\x12\x65\n\x15\x66irst_party_principal\x18\x01 \x01(\x0b\x32\x44.google.cloud.audit.ServiceAccountDelegationInfo.FirstPartyPrincipalH\x00\x12\x65\n\x15third_party_principal\x18\x02 \x01(\x0b\x32\x44.google.cloud.audit.ServiceAccountDelegationInfo.ThirdPartyPrincipalH\x00\x1a\x61\n\x13\x46irstPartyPrincipal\x12\x17\n\x0fprincipal_email\x18\x01 \x01(\t\x12\x31\n\x10service_metadata\x18\x02 \x01(\x0b\x32\x17.google.protobuf.Struct\x1aJ\n\x13ThirdPartyPrincipal\x12\x33\n\x12third_party_claims\x18\x01 \x01(\x0b\x32\x17.google.protobuf.StructB\x0b\n\tAuthority"d\n\x13PolicyViolationInfo\x12M\n\x19org_policy_violation_info\x18\x01 \x01(\x0b\x32*.google.cloud.audit.OrgPolicyViolationInfo"\xb2\x02\n\x16OrgPolicyViolationInfo\x12-\n\x07payload\x18\x01 \x01(\x0b\x32\x17.google.protobuf.StructB\x03\xe0\x41\x01\x12\x1a\n\rresource_type\x18\x02 \x01(\tB\x03\xe0\x41\x01\x12X\n\rresource_tags\x18\x03 \x03(\x0b\x32<.google.cloud.audit.OrgPolicyViolationInfo.ResourceTagsEntryB\x03\xe0\x41\x01\x12>\n\x0eviolation_info\x18\x04 \x03(\x0b\x32!.google.cloud.audit.ViolationInfoB\x03\xe0\x41\x01\x1a\x33\n\x11ResourceTagsEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01"\x97\x02\n\rViolationInfo\x12\x17\n\nconstraint\x18\x01 \x01(\tB\x03\xe0\x41\x01\x12\x1a\n\rerror_message\x18\x02 \x01(\tB\x03\xe0\x41\x01\x12\x1a\n\rchecked_value\x18\x03 \x01(\tB\x03\xe0\x41\x01\x12\x46\n\x0bpolicy_type\x18\x04 \x01(\x0e\x32,.google.cloud.audit.ViolationInfo.PolicyTypeB\x03\xe0\x41\x01"m\n\nPolicyType\x12\x1b\n\x17POLICY_TYPE_UNSPECIFIED\x10\x00\x12\x16\n\x12\x42OOLEAN_CONSTRAINT\x10\x01\x12\x13\n\x0fLIST_CONSTRAINT\x10\x02\x12\x15\n\x11\x43USTOM_CONSTRAINT\x10\x03\x42\x65\n\x16\x63om.google.cloud.auditB\rAuditLogProtoP\x01Z7google.golang.org/genproto/googleapis/cloud/audit;audit\xf8\x01\x01\x62\x06proto3' + b'\n"google/cloud/audit/audit_log.proto\x12\x12google.cloud.audit\x1a\x1fgoogle/api/field_behavior.proto\x1a\x19google/protobuf/any.proto\x1a\x1cgoogle/protobuf/struct.proto\x1a*google/rpc/context/attribute_context.proto\x1a\x17google/rpc/status.proto"\xc6\x05\n\x08\x41uditLog\x12\x14\n\x0cservice_name\x18\x07 \x01(\t\x12\x13\n\x0bmethod_name\x18\x08 \x01(\t\x12\x15\n\rresource_name\x18\x0b \x01(\t\x12?\n\x11resource_location\x18\x14 \x01(\x0b\x32$.google.cloud.audit.ResourceLocation\x12\x38\n\x17resource_original_state\x18\x13 \x01(\x0b\x32\x17.google.protobuf.Struct\x12\x1a\n\x12num_response_items\x18\x0c \x01(\x03\x12"\n\x06status\x18\x02 \x01(\x0b\x32\x12.google.rpc.Status\x12\x43\n\x13\x61uthentication_info\x18\x03 \x01(\x0b\x32&.google.cloud.audit.AuthenticationInfo\x12\x41\n\x12\x61uthorization_info\x18\t \x03(\x0b\x32%.google.cloud.audit.AuthorizationInfo\x12\x46\n\x15policy_violation_info\x18\x19 \x01(\x0b\x32\'.google.cloud.audit.PolicyViolationInfo\x12=\n\x10request_metadata\x18\x04 \x01(\x0b\x32#.google.cloud.audit.RequestMetadata\x12(\n\x07request\x18\x10 \x01(\x0b\x32\x17.google.protobuf.Struct\x12)\n\x08response\x18\x11 \x01(\x0b\x32\x17.google.protobuf.Struct\x12)\n\x08metadata\x18\x12 \x01(\x0b\x32\x17.google.protobuf.Struct\x12.\n\x0cservice_data\x18\x0f \x01(\x0b\x32\x14.google.protobuf.AnyB\x02\x18\x01"\x99\x02\n\x12\x41uthenticationInfo\x12\x17\n\x0fprincipal_email\x18\x01 \x01(\t\x12\x1a\n\x12\x61uthority_selector\x18\x02 \x01(\t\x12\x36\n\x15third_party_principal\x18\x04 \x01(\x0b\x32\x17.google.protobuf.Struct\x12 \n\x18service_account_key_name\x18\x05 \x01(\t\x12Y\n\x1fservice_account_delegation_info\x18\x06 \x03(\x0b\x32\x30.google.cloud.audit.ServiceAccountDelegationInfo\x12\x19\n\x11principal_subject\x18\x08 \x01(\t"\xd8\x02\n\x11\x41uthorizationInfo\x12\x10\n\x08resource\x18\x01 \x01(\t\x12\x12\n\npermission\x18\x02 \x01(\t\x12\x0f\n\x07granted\x18\x03 \x01(\x08\x12J\n\x13resource_attributes\x18\x05 \x01(\x0b\x32-.google.rpc.context.AttributeContext.Resource\x12M\n\x0fpermission_type\x18\x07 \x01(\x0e\x32\x34.google.cloud.audit.AuthorizationInfo.PermissionType"q\n\x0ePermissionType\x12\x1f\n\x1bPERMISSION_TYPE_UNSPECIFIED\x10\x00\x12\x0e\n\nADMIN_READ\x10\x01\x12\x0f\n\x0b\x41\x44MIN_WRITE\x10\x02\x12\r\n\tDATA_READ\x10\x03\x12\x0e\n\nDATA_WRITE\x10\x04"\xf5\x01\n\x0fRequestMetadata\x12\x11\n\tcaller_ip\x18\x01 \x01(\t\x12"\n\x1a\x63\x61ller_supplied_user_agent\x18\x02 \x01(\t\x12\x16\n\x0e\x63\x61ller_network\x18\x03 \x01(\t\x12H\n\x12request_attributes\x18\x07 \x01(\x0b\x32,.google.rpc.context.AttributeContext.Request\x12I\n\x16\x64\x65stination_attributes\x18\x08 \x01(\x0b\x32).google.rpc.context.AttributeContext.Peer"I\n\x10ResourceLocation\x12\x19\n\x11\x63urrent_locations\x18\x01 \x03(\t\x12\x1a\n\x12original_locations\x18\x02 \x03(\t"\xc3\x03\n\x1cServiceAccountDelegationInfo\x12\x19\n\x11principal_subject\x18\x03 \x01(\t\x12\x65\n\x15\x66irst_party_principal\x18\x01 \x01(\x0b\x32\x44.google.cloud.audit.ServiceAccountDelegationInfo.FirstPartyPrincipalH\x00\x12\x65\n\x15third_party_principal\x18\x02 \x01(\x0b\x32\x44.google.cloud.audit.ServiceAccountDelegationInfo.ThirdPartyPrincipalH\x00\x1a\x61\n\x13\x46irstPartyPrincipal\x12\x17\n\x0fprincipal_email\x18\x01 \x01(\t\x12\x31\n\x10service_metadata\x18\x02 \x01(\x0b\x32\x17.google.protobuf.Struct\x1aJ\n\x13ThirdPartyPrincipal\x12\x33\n\x12third_party_claims\x18\x01 \x01(\x0b\x32\x17.google.protobuf.StructB\x0b\n\tAuthority"d\n\x13PolicyViolationInfo\x12M\n\x19org_policy_violation_info\x18\x01 \x01(\x0b\x32*.google.cloud.audit.OrgPolicyViolationInfo"\xb6\x02\n\x16OrgPolicyViolationInfo\x12.\n\x07payload\x18\x01 \x01(\x0b\x32\x17.google.protobuf.StructB\x04\xe2\x41\x01\x01\x12\x1b\n\rresource_type\x18\x02 \x01(\tB\x04\xe2\x41\x01\x01\x12Y\n\rresource_tags\x18\x03 \x03(\x0b\x32<.google.cloud.audit.OrgPolicyViolationInfo.ResourceTagsEntryB\x04\xe2\x41\x01\x01\x12?\n\x0eviolation_info\x18\x04 \x03(\x0b\x32!.google.cloud.audit.ViolationInfoB\x04\xe2\x41\x01\x01\x1a\x33\n\x11ResourceTagsEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01"\x9b\x02\n\rViolationInfo\x12\x18\n\nconstraint\x18\x01 \x01(\tB\x04\xe2\x41\x01\x01\x12\x1b\n\rerror_message\x18\x02 \x01(\tB\x04\xe2\x41\x01\x01\x12\x1b\n\rchecked_value\x18\x03 \x01(\tB\x04\xe2\x41\x01\x01\x12G\n\x0bpolicy_type\x18\x04 \x01(\x0e\x32,.google.cloud.audit.ViolationInfo.PolicyTypeB\x04\xe2\x41\x01\x01"m\n\nPolicyType\x12\x1b\n\x17POLICY_TYPE_UNSPECIFIED\x10\x00\x12\x16\n\x12\x42OOLEAN_CONSTRAINT\x10\x01\x12\x13\n\x0fLIST_CONSTRAINT\x10\x02\x12\x15\n\x11\x43USTOM_CONSTRAINT\x10\x03\x42\x65\n\x16\x63om.google.cloud.auditB\rAuditLogProtoP\x01Z7google.golang.org/genproto/googleapis/cloud/audit;audit\xf8\x01\x01\x62\x06proto3' ) _globals = globals() @@ -65,41 +65,41 @@ _globals["_ORGPOLICYVIOLATIONINFO"].fields_by_name["payload"]._loaded_options = None _globals["_ORGPOLICYVIOLATIONINFO"].fields_by_name[ "payload" - ]._serialized_options = b"\340A\001" + ]._serialized_options = b"\342A\001\001" _globals["_ORGPOLICYVIOLATIONINFO"].fields_by_name[ "resource_type" ]._loaded_options = None _globals["_ORGPOLICYVIOLATIONINFO"].fields_by_name[ "resource_type" - ]._serialized_options = b"\340A\001" + ]._serialized_options = b"\342A\001\001" _globals["_ORGPOLICYVIOLATIONINFO"].fields_by_name[ "resource_tags" ]._loaded_options = None _globals["_ORGPOLICYVIOLATIONINFO"].fields_by_name[ "resource_tags" - ]._serialized_options = b"\340A\001" + ]._serialized_options = b"\342A\001\001" _globals["_ORGPOLICYVIOLATIONINFO"].fields_by_name[ "violation_info" ]._loaded_options = None _globals["_ORGPOLICYVIOLATIONINFO"].fields_by_name[ "violation_info" - ]._serialized_options = b"\340A\001" + ]._serialized_options = b"\342A\001\001" _globals["_VIOLATIONINFO"].fields_by_name["constraint"]._loaded_options = None _globals["_VIOLATIONINFO"].fields_by_name[ "constraint" - ]._serialized_options = b"\340A\001" + ]._serialized_options = b"\342A\001\001" _globals["_VIOLATIONINFO"].fields_by_name["error_message"]._loaded_options = None _globals["_VIOLATIONINFO"].fields_by_name[ "error_message" - ]._serialized_options = b"\340A\001" + ]._serialized_options = b"\342A\001\001" _globals["_VIOLATIONINFO"].fields_by_name["checked_value"]._loaded_options = None _globals["_VIOLATIONINFO"].fields_by_name[ "checked_value" - ]._serialized_options = b"\340A\001" + ]._serialized_options = b"\342A\001\001" _globals["_VIOLATIONINFO"].fields_by_name["policy_type"]._loaded_options = None _globals["_VIOLATIONINFO"].fields_by_name[ "policy_type" - ]._serialized_options = b"\340A\001" + ]._serialized_options = b"\342A\001\001" _globals["_AUDITLOG"]._serialized_start = 218 _globals["_AUDITLOG"]._serialized_end = 928 _globals["_AUTHENTICATIONINFO"]._serialized_start = 931 @@ -125,11 +125,11 @@ _globals["_POLICYVIOLATIONINFO"]._serialized_start = 2338 _globals["_POLICYVIOLATIONINFO"]._serialized_end = 2438 _globals["_ORGPOLICYVIOLATIONINFO"]._serialized_start = 2441 - _globals["_ORGPOLICYVIOLATIONINFO"]._serialized_end = 2747 - _globals["_ORGPOLICYVIOLATIONINFO_RESOURCETAGSENTRY"]._serialized_start = 2696 - _globals["_ORGPOLICYVIOLATIONINFO_RESOURCETAGSENTRY"]._serialized_end = 2747 - _globals["_VIOLATIONINFO"]._serialized_start = 2750 - _globals["_VIOLATIONINFO"]._serialized_end = 3029 - _globals["_VIOLATIONINFO_POLICYTYPE"]._serialized_start = 2920 - _globals["_VIOLATIONINFO_POLICYTYPE"]._serialized_end = 3029 + _globals["_ORGPOLICYVIOLATIONINFO"]._serialized_end = 2751 + _globals["_ORGPOLICYVIOLATIONINFO_RESOURCETAGSENTRY"]._serialized_start = 2700 + _globals["_ORGPOLICYVIOLATIONINFO_RESOURCETAGSENTRY"]._serialized_end = 2751 + _globals["_VIOLATIONINFO"]._serialized_start = 2754 + _globals["_VIOLATIONINFO"]._serialized_end = 3037 + _globals["_VIOLATIONINFO_POLICYTYPE"]._serialized_start = 2928 + _globals["_VIOLATIONINFO_POLICYTYPE"]._serialized_end = 3037 # @@protoc_insertion_point(module_scope) diff --git a/packages/google-cloud-build/google/cloud/devtools/cloudbuild_v1/types/cloudbuild.py b/packages/google-cloud-build/google/cloud/devtools/cloudbuild_v1/types/cloudbuild.py index 94d61701e49d..c344d0c00478 100644 --- a/packages/google-cloud-build/google/cloud/devtools/cloudbuild_v1/types/cloudbuild.py +++ b/packages/google-cloud-build/google/cloud/devtools/cloudbuild_v1/types/cloudbuild.py @@ -2875,6 +2875,9 @@ class BuildTrigger(proto.Message): source at whatever commit caused the event. This field is currently only used by Webhook, Pub/Sub, Manual, and Cron triggers. + approval_config (google.cloud.devtools.cloudbuild_v1.types.ApprovalConfig): + Configuration for manual approval to start a + build invocation of this BuildTrigger. service_account (str): The service account used for all user-controlled operations including UpdateBuildTrigger, RunBuildTrigger, CreateBuild, @@ -2983,6 +2986,11 @@ class BuildTrigger(proto.Message): number=26, message="GitRepoSource", ) + approval_config: "ApprovalConfig" = proto.Field( + proto.MESSAGE, + number=28, + message="ApprovalConfig", + ) service_account: str = proto.Field( proto.STRING, number=33, diff --git a/packages/google-cloud-build/tests/unit/gapic/cloudbuild_v1/test_cloud_build.py b/packages/google-cloud-build/tests/unit/gapic/cloudbuild_v1/test_cloud_build.py index 60aee6488f19..2abf504abad3 100644 --- a/packages/google-cloud-build/tests/unit/gapic/cloudbuild_v1/test_cloud_build.py +++ b/packages/google-cloud-build/tests/unit/gapic/cloudbuild_v1/test_cloud_build.py @@ -14446,6 +14446,7 @@ def test_create_build_trigger_rest_call_success(request_type): "repo_type": 1, "github_enterprise_config": "github_enterprise_config_value", }, + "approval_config": {}, "service_account": "service_account_value", "repository_event_config": { "repository": "repository_value", @@ -15361,6 +15362,7 @@ def test_update_build_trigger_rest_call_success(request_type): "repo_type": 1, "github_enterprise_config": "github_enterprise_config_value", }, + "approval_config": {}, "service_account": "service_account_value", "repository_event_config": { "repository": "repository_value", diff --git a/packages/google-cloud-certificate-manager/google/cloud/certificate_manager/__init__.py b/packages/google-cloud-certificate-manager/google/cloud/certificate_manager/__init__.py index 0ef26029e2e0..c7a642e2eed2 100644 --- a/packages/google-cloud-certificate-manager/google/cloud/certificate_manager/__init__.py +++ b/packages/google-cloud-certificate-manager/google/cloud/certificate_manager/__init__.py @@ -31,6 +31,7 @@ GetCertificateIssuanceConfigRequest, ListCertificateIssuanceConfigsRequest, ListCertificateIssuanceConfigsResponse, + UpdateCertificateIssuanceConfigRequest, ) from google.cloud.certificate_manager_v1.types.certificate_manager import ( Certificate, @@ -83,6 +84,7 @@ "GetCertificateIssuanceConfigRequest", "ListCertificateIssuanceConfigsRequest", "ListCertificateIssuanceConfigsResponse", + "UpdateCertificateIssuanceConfigRequest", "Certificate", "CertificateMap", "CertificateMapEntry", diff --git a/packages/google-cloud-certificate-manager/google/cloud/certificate_manager_v1/__init__.py b/packages/google-cloud-certificate-manager/google/cloud/certificate_manager_v1/__init__.py index 907842deff87..538111dc8993 100644 --- a/packages/google-cloud-certificate-manager/google/cloud/certificate_manager_v1/__init__.py +++ b/packages/google-cloud-certificate-manager/google/cloud/certificate_manager_v1/__init__.py @@ -44,6 +44,7 @@ GetCertificateIssuanceConfigRequest, ListCertificateIssuanceConfigsRequest, ListCertificateIssuanceConfigsResponse, + UpdateCertificateIssuanceConfigRequest, ) from .types.certificate_manager import ( Certificate, @@ -128,6 +129,7 @@ "OperationMetadata", "ServingState", "TrustConfig", + "UpdateCertificateIssuanceConfigRequest", "UpdateCertificateMapEntryRequest", "UpdateCertificateMapRequest", "UpdateCertificateRequest", diff --git a/packages/google-cloud-certificate-manager/google/cloud/certificate_manager_v1/gapic_metadata.json b/packages/google-cloud-certificate-manager/google/cloud/certificate_manager_v1/gapic_metadata.json index 4eb3f3c85330..49a7cc5332de 100644 --- a/packages/google-cloud-certificate-manager/google/cloud/certificate_manager_v1/gapic_metadata.json +++ b/packages/google-cloud-certificate-manager/google/cloud/certificate_manager_v1/gapic_metadata.json @@ -135,6 +135,11 @@ "update_certificate" ] }, + "UpdateCertificateIssuanceConfig": { + "methods": [ + "update_certificate_issuance_config" + ] + }, "UpdateCertificateMap": { "methods": [ "update_certificate_map" @@ -285,6 +290,11 @@ "update_certificate" ] }, + "UpdateCertificateIssuanceConfig": { + "methods": [ + "update_certificate_issuance_config" + ] + }, "UpdateCertificateMap": { "methods": [ "update_certificate_map" @@ -435,6 +445,11 @@ "update_certificate" ] }, + "UpdateCertificateIssuanceConfig": { + "methods": [ + "update_certificate_issuance_config" + ] + }, "UpdateCertificateMap": { "methods": [ "update_certificate_map" diff --git a/packages/google-cloud-certificate-manager/google/cloud/certificate_manager_v1/services/certificate_manager/async_client.py b/packages/google-cloud-certificate-manager/google/cloud/certificate_manager_v1/services/certificate_manager/async_client.py index 57da200a25fc..8dcbe2a30702 100644 --- a/packages/google-cloud-certificate-manager/google/cloud/certificate_manager_v1/services/certificate_manager/async_client.py +++ b/packages/google-cloud-certificate-manager/google/cloud/certificate_manager_v1/services/certificate_manager/async_client.py @@ -3478,6 +3478,170 @@ async def sample_create_certificate_issuance_config(): # Done; return the response. return response + async def update_certificate_issuance_config( + self, + request: Optional[ + Union[ + gcc_certificate_issuance_config.UpdateCertificateIssuanceConfigRequest, + dict, + ] + ] = None, + *, + certificate_issuance_config: Optional[ + gcc_certificate_issuance_config.CertificateIssuanceConfig + ] = 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]]] = (), + ) -> operation_async.AsyncOperation: + r"""Updates a CertificateIssuanceConfig. + + .. 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 certificate_manager_v1 + + async def sample_update_certificate_issuance_config(): + # Create a client + client = certificate_manager_v1.CertificateManagerAsyncClient() + + # Initialize request argument(s) + certificate_issuance_config = certificate_manager_v1.CertificateIssuanceConfig() + certificate_issuance_config.certificate_authority_config.certificate_authority_service_config.ca_pool = "ca_pool_value" + certificate_issuance_config.rotation_window_percentage = 2788 + certificate_issuance_config.key_algorithm = "ECDSA_P256" + + request = certificate_manager_v1.UpdateCertificateIssuanceConfigRequest( + certificate_issuance_config=certificate_issuance_config, + ) + + # Make the request + operation = await client.update_certificate_issuance_config(request=request) + + print("Waiting for operation to complete...") + + response = await operation.result() + + # Handle the response + print(response) + + Args: + request (Optional[Union[google.cloud.certificate_manager_v1.types.UpdateCertificateIssuanceConfigRequest, dict]]): + The request object. Request for the ``UpdateCertificateIssuanceConfig`` + method. + certificate_issuance_config (:class:`google.cloud.certificate_manager_v1.types.CertificateIssuanceConfig`): + Required. A definition of the + certificate issuance config to update. + + This corresponds to the ``certificate_issuance_config`` field + on the ``request`` instance; if ``request`` is provided, this + should not be set. + update_mask (:class:`google.protobuf.field_mask_pb2.FieldMask`): + Required. The update mask applies to the resource. For + the ``FieldMask`` definition, see + https://developers.google.com/protocol-buffers/docs/reference/google.protobuf#fieldmask. + + 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.api_core.operation_async.AsyncOperation: + An object representing a long-running operation. + + The result type for the operation will be + :class:`google.cloud.certificate_manager_v1.types.CertificateIssuanceConfig` + CertificateIssuanceConfig specifies how to issue and + manage a certificate. + + """ + # 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 = [certificate_issuance_config, 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, + gcc_certificate_issuance_config.UpdateCertificateIssuanceConfigRequest, + ): + request = ( + gcc_certificate_issuance_config.UpdateCertificateIssuanceConfigRequest( + request + ) + ) + + # If we have keyword arguments corresponding to fields on the + # request, apply these. + if certificate_issuance_config is not None: + request.certificate_issuance_config = certificate_issuance_config + 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_certificate_issuance_config + ] + + # Certain fields should be provided within the metadata header; + # add these here. + metadata = tuple(metadata) + ( + gapic_v1.routing_header.to_grpc_metadata( + ( + ( + "certificate_issuance_config.name", + request.certificate_issuance_config.name, + ), + ) + ), + ) + + # Validate the universe domain. + self._client._validate_universe_domain() + + # Send the request. + response = await rpc( + request, + retry=retry, + timeout=timeout, + metadata=metadata, + ) + + # Wrap the response in an operation future. + response = operation_async.from_gapic( + response, + self._client._transport.operations_client, + gcc_certificate_issuance_config.CertificateIssuanceConfig, + metadata_type=certificate_manager.OperationMetadata, + ) + + # Done; return the response. + return response + async def delete_certificate_issuance_config( self, request: Optional[ diff --git a/packages/google-cloud-certificate-manager/google/cloud/certificate_manager_v1/services/certificate_manager/client.py b/packages/google-cloud-certificate-manager/google/cloud/certificate_manager_v1/services/certificate_manager/client.py index 1a52517ef760..081d0272e797 100644 --- a/packages/google-cloud-certificate-manager/google/cloud/certificate_manager_v1/services/certificate_manager/client.py +++ b/packages/google-cloud-certificate-manager/google/cloud/certificate_manager_v1/services/certificate_manager/client.py @@ -3827,6 +3827,169 @@ def sample_create_certificate_issuance_config(): # Done; return the response. return response + def update_certificate_issuance_config( + self, + request: Optional[ + Union[ + gcc_certificate_issuance_config.UpdateCertificateIssuanceConfigRequest, + dict, + ] + ] = None, + *, + certificate_issuance_config: Optional[ + gcc_certificate_issuance_config.CertificateIssuanceConfig + ] = 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]]] = (), + ) -> operation.Operation: + r"""Updates a CertificateIssuanceConfig. + + .. 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 certificate_manager_v1 + + def sample_update_certificate_issuance_config(): + # Create a client + client = certificate_manager_v1.CertificateManagerClient() + + # Initialize request argument(s) + certificate_issuance_config = certificate_manager_v1.CertificateIssuanceConfig() + certificate_issuance_config.certificate_authority_config.certificate_authority_service_config.ca_pool = "ca_pool_value" + certificate_issuance_config.rotation_window_percentage = 2788 + certificate_issuance_config.key_algorithm = "ECDSA_P256" + + request = certificate_manager_v1.UpdateCertificateIssuanceConfigRequest( + certificate_issuance_config=certificate_issuance_config, + ) + + # Make the request + operation = client.update_certificate_issuance_config(request=request) + + print("Waiting for operation to complete...") + + response = operation.result() + + # Handle the response + print(response) + + Args: + request (Union[google.cloud.certificate_manager_v1.types.UpdateCertificateIssuanceConfigRequest, dict]): + The request object. Request for the ``UpdateCertificateIssuanceConfig`` + method. + certificate_issuance_config (google.cloud.certificate_manager_v1.types.CertificateIssuanceConfig): + Required. A definition of the + certificate issuance config to update. + + This corresponds to the ``certificate_issuance_config`` field + on the ``request`` instance; if ``request`` is provided, this + should not be set. + update_mask (google.protobuf.field_mask_pb2.FieldMask): + Required. The update mask applies to the resource. For + the ``FieldMask`` definition, see + https://developers.google.com/protocol-buffers/docs/reference/google.protobuf#fieldmask. + + 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.api_core.operation.Operation: + An object representing a long-running operation. + + The result type for the operation will be + :class:`google.cloud.certificate_manager_v1.types.CertificateIssuanceConfig` + CertificateIssuanceConfig specifies how to issue and + manage a certificate. + + """ + # 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 = [certificate_issuance_config, 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, + gcc_certificate_issuance_config.UpdateCertificateIssuanceConfigRequest, + ): + request = ( + gcc_certificate_issuance_config.UpdateCertificateIssuanceConfigRequest( + request + ) + ) + # If we have keyword arguments corresponding to fields on the + # request, apply these. + if certificate_issuance_config is not None: + request.certificate_issuance_config = certificate_issuance_config + 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_certificate_issuance_config + ] + + # Certain fields should be provided within the metadata header; + # add these here. + metadata = tuple(metadata) + ( + gapic_v1.routing_header.to_grpc_metadata( + ( + ( + "certificate_issuance_config.name", + request.certificate_issuance_config.name, + ), + ) + ), + ) + + # Validate the universe domain. + self._validate_universe_domain() + + # Send the request. + response = rpc( + request, + retry=retry, + timeout=timeout, + metadata=metadata, + ) + + # Wrap the response in an operation future. + response = operation.from_gapic( + response, + self._transport.operations_client, + gcc_certificate_issuance_config.CertificateIssuanceConfig, + metadata_type=certificate_manager.OperationMetadata, + ) + + # Done; return the response. + return response + def delete_certificate_issuance_config( self, request: Optional[ diff --git a/packages/google-cloud-certificate-manager/google/cloud/certificate_manager_v1/services/certificate_manager/transports/base.py b/packages/google-cloud-certificate-manager/google/cloud/certificate_manager_v1/services/certificate_manager/transports/base.py index d377bd186931..84793a712afb 100644 --- a/packages/google-cloud-certificate-manager/google/cloud/certificate_manager_v1/services/certificate_manager/transports/base.py +++ b/packages/google-cloud-certificate-manager/google/cloud/certificate_manager_v1/services/certificate_manager/transports/base.py @@ -472,6 +472,11 @@ def _prep_wrapped_messages(self, client_info): default_timeout=60.0, client_info=client_info, ), + self.update_certificate_issuance_config: gapic_v1.method.wrap_method( + self.update_certificate_issuance_config, + default_timeout=None, + client_info=client_info, + ), self.delete_certificate_issuance_config: gapic_v1.method.wrap_method( self.delete_certificate_issuance_config, default_retry=retries.Retry( @@ -795,6 +800,15 @@ def create_certificate_issuance_config( ]: raise NotImplementedError() + @property + def update_certificate_issuance_config( + self, + ) -> Callable[ + [gcc_certificate_issuance_config.UpdateCertificateIssuanceConfigRequest], + Union[operations_pb2.Operation, Awaitable[operations_pb2.Operation]], + ]: + raise NotImplementedError() + @property def delete_certificate_issuance_config( self, diff --git a/packages/google-cloud-certificate-manager/google/cloud/certificate_manager_v1/services/certificate_manager/transports/grpc.py b/packages/google-cloud-certificate-manager/google/cloud/certificate_manager_v1/services/certificate_manager/transports/grpc.py index e4ebe9738596..8d6391eeee25 100644 --- a/packages/google-cloud-certificate-manager/google/cloud/certificate_manager_v1/services/certificate_manager/transports/grpc.py +++ b/packages/google-cloud-certificate-manager/google/cloud/certificate_manager_v1/services/certificate_manager/transports/grpc.py @@ -1062,6 +1062,38 @@ def create_certificate_issuance_config( ) return self._stubs["create_certificate_issuance_config"] + @property + def update_certificate_issuance_config( + self, + ) -> Callable[ + [gcc_certificate_issuance_config.UpdateCertificateIssuanceConfigRequest], + operations_pb2.Operation, + ]: + r"""Return a callable for the update certificate issuance + config method over gRPC. + + Updates a CertificateIssuanceConfig. + + Returns: + Callable[[~.UpdateCertificateIssuanceConfigRequest], + ~.Operation]: + 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_certificate_issuance_config" not in self._stubs: + self._stubs["update_certificate_issuance_config"] = ( + self._logged_channel.unary_unary( + "/google.cloud.certificatemanager.v1.CertificateManager/UpdateCertificateIssuanceConfig", + request_serializer=gcc_certificate_issuance_config.UpdateCertificateIssuanceConfigRequest.serialize, + response_deserializer=operations_pb2.Operation.FromString, + ) + ) + return self._stubs["update_certificate_issuance_config"] + @property def delete_certificate_issuance_config( self, diff --git a/packages/google-cloud-certificate-manager/google/cloud/certificate_manager_v1/services/certificate_manager/transports/grpc_asyncio.py b/packages/google-cloud-certificate-manager/google/cloud/certificate_manager_v1/services/certificate_manager/transports/grpc_asyncio.py index 566cd1855963..44991ef398a2 100644 --- a/packages/google-cloud-certificate-manager/google/cloud/certificate_manager_v1/services/certificate_manager/transports/grpc_asyncio.py +++ b/packages/google-cloud-certificate-manager/google/cloud/certificate_manager_v1/services/certificate_manager/transports/grpc_asyncio.py @@ -1083,6 +1083,38 @@ def create_certificate_issuance_config( ) return self._stubs["create_certificate_issuance_config"] + @property + def update_certificate_issuance_config( + self, + ) -> Callable[ + [gcc_certificate_issuance_config.UpdateCertificateIssuanceConfigRequest], + Awaitable[operations_pb2.Operation], + ]: + r"""Return a callable for the update certificate issuance + config method over gRPC. + + Updates a CertificateIssuanceConfig. + + Returns: + Callable[[~.UpdateCertificateIssuanceConfigRequest], + Awaitable[~.Operation]]: + 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_certificate_issuance_config" not in self._stubs: + self._stubs["update_certificate_issuance_config"] = ( + self._logged_channel.unary_unary( + "/google.cloud.certificatemanager.v1.CertificateManager/UpdateCertificateIssuanceConfig", + request_serializer=gcc_certificate_issuance_config.UpdateCertificateIssuanceConfigRequest.serialize, + response_deserializer=operations_pb2.Operation.FromString, + ) + ) + return self._stubs["update_certificate_issuance_config"] + @property def delete_certificate_issuance_config( self, @@ -1582,6 +1614,11 @@ def _prep_wrapped_messages(self, client_info): default_timeout=60.0, client_info=client_info, ), + self.update_certificate_issuance_config: self._wrap_method( + self.update_certificate_issuance_config, + default_timeout=None, + client_info=client_info, + ), self.delete_certificate_issuance_config: self._wrap_method( self.delete_certificate_issuance_config, default_retry=retries.AsyncRetry( diff --git a/packages/google-cloud-certificate-manager/google/cloud/certificate_manager_v1/services/certificate_manager/transports/rest.py b/packages/google-cloud-certificate-manager/google/cloud/certificate_manager_v1/services/certificate_manager/transports/rest.py index c0876bacc7c6..e0a2d38a1b24 100644 --- a/packages/google-cloud-certificate-manager/google/cloud/certificate_manager_v1/services/certificate_manager/transports/rest.py +++ b/packages/google-cloud-certificate-manager/google/cloud/certificate_manager_v1/services/certificate_manager/transports/rest.py @@ -282,6 +282,14 @@ def post_update_certificate(self, response): logging.log(f"Received response: {response}") return response + def pre_update_certificate_issuance_config(self, request, metadata): + logging.log(f"Received request: {request}") + return request, metadata + + def post_update_certificate_issuance_config(self, response): + logging.log(f"Received response: {response}") + return response + def pre_update_certificate_map(self, request, metadata): logging.log(f"Received request: {request}") return request, metadata @@ -1571,6 +1579,55 @@ def post_update_certificate_with_metadata( """ return response, metadata + def pre_update_certificate_issuance_config( + self, + request: gcc_certificate_issuance_config.UpdateCertificateIssuanceConfigRequest, + metadata: Sequence[Tuple[str, Union[str, bytes]]], + ) -> Tuple[ + gcc_certificate_issuance_config.UpdateCertificateIssuanceConfigRequest, + Sequence[Tuple[str, Union[str, bytes]]], + ]: + """Pre-rpc interceptor for update_certificate_issuance_config + + Override in a subclass to manipulate the request or metadata + before they are sent to the CertificateManager server. + """ + return request, metadata + + def post_update_certificate_issuance_config( + self, response: operations_pb2.Operation + ) -> operations_pb2.Operation: + """Post-rpc interceptor for update_certificate_issuance_config + + DEPRECATED. Please use the `post_update_certificate_issuance_config_with_metadata` + interceptor instead. + + Override in a subclass to read or manipulate the response + after it is returned by the CertificateManager server but before + it is returned to user code. This `post_update_certificate_issuance_config` interceptor runs + before the `post_update_certificate_issuance_config_with_metadata` interceptor. + """ + return response + + def post_update_certificate_issuance_config_with_metadata( + self, + response: operations_pb2.Operation, + metadata: Sequence[Tuple[str, Union[str, bytes]]], + ) -> Tuple[operations_pb2.Operation, Sequence[Tuple[str, Union[str, bytes]]]]: + """Post-rpc interceptor for update_certificate_issuance_config + + Override in a subclass to read or manipulate the response or metadata after it + is returned by the CertificateManager server but before it is returned to user code. + + We recommend only using this `post_update_certificate_issuance_config_with_metadata` + interceptor in new development instead of the `post_update_certificate_issuance_config` interceptor. + When both interceptors are used, this `post_update_certificate_issuance_config_with_metadata` interceptor runs after the + `post_update_certificate_issuance_config` interceptor. The (possibly modified) response returned by + `post_update_certificate_issuance_config` will be passed to + `post_update_certificate_issuance_config_with_metadata`. + """ + return response, metadata + def pre_update_certificate_map( self, request: certificate_manager.UpdateCertificateMapRequest, @@ -5848,6 +5905,163 @@ def __call__( ) return resp + class _UpdateCertificateIssuanceConfig( + _BaseCertificateManagerRestTransport._BaseUpdateCertificateIssuanceConfig, + CertificateManagerRestStub, + ): + def __hash__(self): + return hash( + "CertificateManagerRestTransport.UpdateCertificateIssuanceConfig" + ) + + @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: gcc_certificate_issuance_config.UpdateCertificateIssuanceConfigRequest, + *, + retry: OptionalRetry = gapic_v1.method.DEFAULT, + timeout: Optional[float] = None, + metadata: Sequence[Tuple[str, Union[str, bytes]]] = (), + ) -> operations_pb2.Operation: + r"""Call the update certificate + issuance config method over HTTP. + + Args: + request (~.gcc_certificate_issuance_config.UpdateCertificateIssuanceConfigRequest): + The request object. Request for the ``UpdateCertificateIssuanceConfig`` + 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: + This resource represents a + long-running operation that is the + result of a network API call. + + """ + + http_options = _BaseCertificateManagerRestTransport._BaseUpdateCertificateIssuanceConfig._get_http_options() + request, metadata = ( + self._interceptor.pre_update_certificate_issuance_config( + request, metadata + ) + ) + transcoded_request, body, query_params = transcode_request( + http_options, + request, + required_fields_default_values=getattr( + _BaseCertificateManagerRestTransport._BaseUpdateCertificateIssuanceConfig, + "_BaseUpdateCertificateIssuanceConfig__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.certificatemanager_v1.CertificateManagerClient.UpdateCertificateIssuanceConfig", + extra={ + "serviceName": "google.cloud.certificatemanager.v1.CertificateManager", + "rpcName": "UpdateCertificateIssuanceConfig", + "httpRequest": http_request, + "metadata": http_request["headers"], + }, + ) + + # Send the request + response = CertificateManagerRestTransport._UpdateCertificateIssuanceConfig._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 = operations_pb2.Operation() + json_format.Parse(response.content, resp, ignore_unknown_fields=True) + + resp = self._interceptor.post_update_certificate_issuance_config(resp) + response_metadata = [(k, str(v)) for k, v in response.headers.items()] + resp, _ = ( + self._interceptor.post_update_certificate_issuance_config_with_metadata( + resp, response_metadata + ) + ) + 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.certificatemanager_v1.CertificateManagerClient.update_certificate_issuance_config", + extra={ + "serviceName": "google.cloud.certificatemanager.v1.CertificateManager", + "rpcName": "UpdateCertificateIssuanceConfig", + "metadata": http_response["headers"], + "httpResponse": http_response, + }, + ) + return resp + class _UpdateCertificateMap( _BaseCertificateManagerRestTransport._BaseUpdateCertificateMap, CertificateManagerRestStub, @@ -6726,6 +6940,19 @@ def update_certificate( # In C++ this would require a dynamic_cast return self._UpdateCertificate(self._session, self._host, self._interceptor) # type: ignore + @property + def update_certificate_issuance_config( + self, + ) -> Callable[ + [gcc_certificate_issuance_config.UpdateCertificateIssuanceConfigRequest], + operations_pb2.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._UpdateCertificateIssuanceConfig( + self._session, self._host, self._interceptor + ) # type: ignore + @property def update_certificate_map( self, diff --git a/packages/google-cloud-certificate-manager/google/cloud/certificate_manager_v1/services/certificate_manager/transports/rest_base.py b/packages/google-cloud-certificate-manager/google/cloud/certificate_manager_v1/services/certificate_manager/transports/rest_base.py index 16a1d4d4b790..1604d53a7f50 100644 --- a/packages/google-cloud-certificate-manager/google/cloud/certificate_manager_v1/services/certificate_manager/transports/rest_base.py +++ b/packages/google-cloud-certificate-manager/google/cloud/certificate_manager_v1/services/certificate_manager/transports/rest_base.py @@ -518,6 +518,25 @@ def _get_http_options(): ] return http_options + class _BaseUpdateCertificateIssuanceConfig: + def __hash__(self): # pragma: NO COVER + return NotImplementedError("__hash__ must be implemented.") + + __REQUIRED_FIELDS_DEFAULT_VALUES: Dict[str, Any] = { + "updateMask": {}, + } + + @staticmethod + def _get_http_options(): + http_options: List[Dict[str, str]] = [ + { + "method": "patch", + "uri": "/v1/{certificate_issuance_config.name=projects/*/locations/*/certificateIssuanceConfigs/*}", + "body": "certificate_issuance_config", + }, + ] + return http_options + class _BaseUpdateCertificateMap: def __hash__(self): # pragma: NO COVER return NotImplementedError("__hash__ must be implemented.") diff --git a/packages/google-cloud-certificate-manager/google/cloud/certificate_manager_v1/types/__init__.py b/packages/google-cloud-certificate-manager/google/cloud/certificate_manager_v1/types/__init__.py index fa6cc8a5b9d1..b216f9d53b69 100644 --- a/packages/google-cloud-certificate-manager/google/cloud/certificate_manager_v1/types/__init__.py +++ b/packages/google-cloud-certificate-manager/google/cloud/certificate_manager_v1/types/__init__.py @@ -20,6 +20,7 @@ GetCertificateIssuanceConfigRequest, ListCertificateIssuanceConfigsRequest, ListCertificateIssuanceConfigsResponse, + UpdateCertificateIssuanceConfigRequest, ) from .certificate_manager import ( Certificate, @@ -70,6 +71,7 @@ "GetCertificateIssuanceConfigRequest", "ListCertificateIssuanceConfigsRequest", "ListCertificateIssuanceConfigsResponse", + "UpdateCertificateIssuanceConfigRequest", "Certificate", "CertificateMap", "CertificateMapEntry", diff --git a/packages/google-cloud-certificate-manager/google/cloud/certificate_manager_v1/types/certificate_issuance_config.py b/packages/google-cloud-certificate-manager/google/cloud/certificate_manager_v1/types/certificate_issuance_config.py index 76cb6e8758cf..f93c906139de 100644 --- a/packages/google-cloud-certificate-manager/google/cloud/certificate_manager_v1/types/certificate_issuance_config.py +++ b/packages/google-cloud-certificate-manager/google/cloud/certificate_manager_v1/types/certificate_issuance_config.py @@ -18,6 +18,7 @@ from typing import MutableMapping, MutableSequence import google.protobuf.duration_pb2 as duration_pb2 # 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 proto # type: ignore @@ -28,6 +29,7 @@ "ListCertificateIssuanceConfigsResponse", "GetCertificateIssuanceConfigRequest", "CreateCertificateIssuanceConfigRequest", + "UpdateCertificateIssuanceConfigRequest", "DeleteCertificateIssuanceConfigRequest", "CertificateIssuanceConfig", }, @@ -43,22 +45,22 @@ class ListCertificateIssuanceConfigsRequest(proto.Message): certificate should be listed, specified in the format ``projects/*/locations/*``. page_size (int): - Maximum number of certificate configs to - return per call. + Optional. Maximum number of certificate + configs to return per call. page_token (str): - The value returned by the last + Optional. The value returned by the last ``ListCertificateIssuanceConfigsResponse``. Indicates that this is a continuation of a prior ``ListCertificateIssuanceConfigs`` call, and that the system should return the next page of data. filter (str): - Filter expression to restrict the + Optional. Filter expression to restrict the Certificates Configs returned. order_by (str): - A list of Certificate Config field names used to specify the - order of the returned results. The default sorting order is - ascending. To specify descending order for a field, add a - suffix ``" desc"``. + Optional. A list of Certificate Config field names used to + specify the order of the returned results. The default + sorting order is ascending. To specify descending order for + a field, add a suffix ``" desc"``. """ parent: str = proto.Field( @@ -166,6 +168,31 @@ class CreateCertificateIssuanceConfigRequest(proto.Message): ) +class UpdateCertificateIssuanceConfigRequest(proto.Message): + r"""Request for the ``UpdateCertificateIssuanceConfig`` method. + + Attributes: + certificate_issuance_config (google.cloud.certificate_manager_v1.types.CertificateIssuanceConfig): + Required. A definition of the certificate + issuance config to update. + update_mask (google.protobuf.field_mask_pb2.FieldMask): + Required. The update mask applies to the resource. For the + ``FieldMask`` definition, see + https://developers.google.com/protocol-buffers/docs/reference/google.protobuf#fieldmask. + """ + + certificate_issuance_config: "CertificateIssuanceConfig" = proto.Field( + proto.MESSAGE, + number=1, + message="CertificateIssuanceConfig", + ) + update_mask: field_mask_pb2.FieldMask = proto.Field( + proto.MESSAGE, + number=2, + message=field_mask_pb2.FieldMask, + ) + + class DeleteCertificateIssuanceConfigRequest(proto.Message): r"""Request for the ``DeleteCertificateIssuanceConfig`` method. @@ -188,9 +215,9 @@ class CertificateIssuanceConfig(proto.Message): Attributes: name (str): - A user-defined name of the certificate issuance config. - CertificateIssuanceConfig names must be unique globally and - match pattern + Identifier. A user-defined name of the certificate issuance + config. CertificateIssuanceConfig names must be unique + globally and match pattern ``projects/*/locations/*/certificateIssuanceConfigs/*``. create_time (google.protobuf.timestamp_pb2.Timestamp): Output only. The creation timestamp of a @@ -199,11 +226,11 @@ class CertificateIssuanceConfig(proto.Message): Output only. The last update timestamp of a CertificateIssuanceConfig. labels (MutableMapping[str, str]): - Set of labels associated with a + Optional. Set of labels associated with a CertificateIssuanceConfig. description (str): - One or more paragraphs of text description of - a CertificateIssuanceConfig. + Optional. One or more paragraphs of text + description of a CertificateIssuanceConfig. certificate_authority_config (google.cloud.certificate_manager_v1.types.CertificateIssuanceConfig.CertificateAuthorityConfig): Required. The CA that issues the workload certificate. It includes the CA address, type, @@ -219,6 +246,13 @@ class CertificateIssuanceConfig(proto.Message): key_algorithm (google.cloud.certificate_manager_v1.types.CertificateIssuanceConfig.KeyAlgorithm): Required. The key algorithm to use when generating the private key. + tags (MutableMapping[str, str]): + Optional. Input only. Immutable. Tag + keys/values directly bound to this resource. For + example: + + "123/environment": "production", + "123/costCenter": "marketing". """ class KeyAlgorithm(proto.Enum): @@ -316,6 +350,11 @@ class CertificateAuthorityServiceConfig(proto.Message): number=9, enum=KeyAlgorithm, ) + tags: MutableMapping[str, str] = proto.MapField( + proto.STRING, + proto.STRING, + number=10, + ) __all__ = tuple(sorted(__protobuf__.manifest)) diff --git a/packages/google-cloud-certificate-manager/google/cloud/certificate_manager_v1/types/certificate_manager.py b/packages/google-cloud-certificate-manager/google/cloud/certificate_manager_v1/types/certificate_manager.py index 840b4c6dce18..f4bf47024c9c 100644 --- a/packages/google-cloud-certificate-manager/google/cloud/certificate_manager_v1/types/certificate_manager.py +++ b/packages/google-cloud-certificate-manager/google/cloud/certificate_manager_v1/types/certificate_manager.py @@ -85,20 +85,20 @@ class ListCertificatesRequest(proto.Message): certificate should be listed, specified in the format ``projects/*/locations/*``. page_size (int): - Maximum number of certificates to return per - call. + Optional. Maximum number of certificates to + return per call. page_token (str): - The value returned by the last ``ListCertificatesResponse``. - Indicates that this is a continuation of a prior - ``ListCertificates`` call, and that the system should return - the next page of data. + Optional. The value returned by the last + ``ListCertificatesResponse``. Indicates that this is a + continuation of a prior ``ListCertificates`` call, and that + the system should return the next page of data. filter (str): - Filter expression to restrict the + Optional. Filter expression to restrict the Certificates returned. order_by (str): - A list of Certificate field names used to specify the order - of the returned results. The default sorting order is - ascending. To specify descending order for a field, add a + Optional. A list of Certificate field names used to specify + the order of the returned results. The default sorting order + is ascending. To specify descending order for a field, add a suffix ``" desc"``. """ @@ -254,21 +254,21 @@ class ListCertificateMapsRequest(proto.Message): certificate maps should be listed, specified in the format ``projects/*/locations/*``. page_size (int): - Maximum number of certificate maps to return - per call. + Optional. Maximum number of certificate maps + to return per call. page_token (str): - The value returned by the last + Optional. The value returned by the last ``ListCertificateMapsResponse``. Indicates that this is a continuation of a prior ``ListCertificateMaps`` call, and that the system should return the next page of data. filter (str): - Filter expression to restrict the + Optional. Filter expression to restrict the Certificates Maps returned. order_by (str): - A list of Certificate Map field names used to specify the - order of the returned results. The default sorting order is - ascending. To specify descending order for a field, add a - suffix ``" desc"``. + Optional. A list of Certificate Map field names used to + specify the order of the returned results. The default + sorting order is ascending. To specify descending order for + a field, add a suffix ``" desc"``. """ parent: str = proto.Field( @@ -423,26 +423,26 @@ class ListCertificateMapEntriesRequest(proto.Message): specified in the format ``projects/*/locations/*/certificateMaps/*``. page_size (int): - Maximum number of certificate map entries to - return. The service may return fewer than this - value. If unspecified, at most 50 certificate - map entries will be returned. The maximum value - is 1000; values above 1000 will be coerced to - 1000. + Optional. Maximum number of certificate map + entries to return. The service may return fewer + than this value. If unspecified, at most 50 + certificate map entries will be returned. The + maximum value is 1000; values above 1000 will be + coerced to 1000. page_token (str): - The value returned by the last + Optional. The value returned by the last ``ListCertificateMapEntriesResponse``. Indicates that this is a continuation of a prior ``ListCertificateMapEntries`` call, and that the system should return the next page of data. filter (str): - Filter expression to restrict the returned - Certificate Map Entries. + Optional. Filter expression to restrict the + returned Certificate Map Entries. order_by (str): - A list of Certificate Map Entry field names used to specify - the order of the returned results. The default sorting order - is ascending. To specify descending order for a field, add a - suffix ``" desc"``. + Optional. A list of Certificate Map Entry field names used + to specify the order of the returned results. The default + sorting order is ascending. To specify descending order for + a field, add a suffix ``" desc"``. """ parent: str = proto.Field( @@ -601,21 +601,21 @@ class ListDnsAuthorizationsRequest(proto.Message): authorizations should be listed, specified in the format ``projects/*/locations/*``. page_size (int): - Maximum number of dns authorizations to - return per call. + Optional. Maximum number of dns + authorizations to return per call. page_token (str): - The value returned by the last + Optional. The value returned by the last ``ListDnsAuthorizationsResponse``. Indicates that this is a continuation of a prior ``ListDnsAuthorizations`` call, and that the system should return the next page of data. filter (str): - Filter expression to restrict the Dns - Authorizations returned. + Optional. Filter expression to restrict the + Dns Authorizations returned. order_by (str): - A list of Dns Authorization field names used to specify the - order of the returned results. The default sorting order is - ascending. To specify descending order for a field, add a - suffix ``" desc"``. + Optional. A list of Dns Authorization field names used to + specify the order of the returned results. The default + sorting order is ascending. To specify descending order for + a field, add a suffix ``" desc"``. """ parent: str = proto.Field( @@ -782,8 +782,10 @@ class OperationMetadata(proto.Message): requested_cancellation (bool): Identifies whether the user has requested cancellation of the operation. Operations that have successfully been - cancelled have [Operation.error][] value with a - [google.rpc.Status.code][google.rpc.Status.code] of 1, + cancelled have + [google.longrunning.Operation.error][google.longrunning.Operation.error] + value with a + [google.rpc.Status.code][google.rpc.Status.code] of ``1``, corresponding to ``Code.CANCELLED``. api_version (str): API version used to start the operation. @@ -833,12 +835,12 @@ class Certificate(proto.Message): Attributes: name (str): - A user-defined name of the certificate. Certificate names - must be unique globally and match pattern + Identifier. A user-defined name of the certificate. + Certificate names must be unique globally and match pattern ``projects/*/locations/*/certificates/*``. description (str): - One or more paragraphs of text description of - a certificate. + Optional. One or more paragraphs of text + description of a certificate. create_time (google.protobuf.timestamp_pb2.Timestamp): Output only. The creation timestamp of a Certificate. @@ -846,7 +848,8 @@ class Certificate(proto.Message): Output only. The last update timestamp of a Certificate. labels (MutableMapping[str, str]): - Set of labels associated with a Certificate. + Optional. Set of labels associated with a + Certificate. self_managed (google.cloud.certificate_manager_v1.types.Certificate.SelfManagedCertificate): If set, defines data of a self-managed certificate. @@ -856,6 +859,11 @@ class Certificate(proto.Message): If set, contains configuration and state of a managed certificate. + This field is a member of `oneof`_ ``type``. + managed_identity (google.cloud.certificate_manager_v1.types.Certificate.ManagedIdentityCertificate): + If set, contains configuration and state of a + managed identity certificate. + This field is a member of `oneof`_ ``type``. san_dnsnames (MutableSequence[str]): Output only. The list of Subject Alternative @@ -871,7 +879,18 @@ class Certificate(proto.Message): Output only. The expiry timestamp of a Certificate. scope (google.cloud.certificate_manager_v1.types.Certificate.Scope): - Immutable. The scope of the certificate. + Optional. Immutable. The scope of the + certificate. + used_by (MutableSequence[google.cloud.certificate_manager_v1.types.Certificate.UsedBy]): + Output only. The list of resources that use + this Certificate. + tags (MutableMapping[str, str]): + Optional. Input only. Immutable. Tag + keys/values directly bound to this resource. For + example: + + "123/environment": "production", + "123/costCenter": "marketing". """ class Scope(proto.Enum): @@ -879,22 +898,30 @@ class Scope(proto.Enum): Values: DEFAULT (0): - Certificates with default scope are served - from core Google data centers. If unsure, choose - this option. + Use the DEFAULT scope if you plan to use the + certificate with global external Application + Load Balancer, global external proxy Network + Load Balancer, or any of the regional Google + Cloud services. EDGE_CACHE (1): - Certificates with scope EDGE_CACHE are special-purposed - certificates, served from Edge Points of Presence. See + Use the EDGE_CACHE scope if you plan to use the certificate + with Media CDN. The certificates are served from Edge Points + of Presence. See https://cloud.google.com/vpc/docs/edge-locations. ALL_REGIONS (2): - Certificates with ALL_REGIONS scope are served from all - Google Cloud regions. See + Use the ALL_REGIONS scope if you plan to use the certificate + with cross-region internal Application Load Balancer. The + certificates are served from all Google Cloud regions. See https://cloud.google.com/compute/docs/regions-zones. + CLIENT_AUTH (3): + Associated with certificates used as client + certificates in Backend mTLS. """ DEFAULT = 0 EDGE_CACHE = 1 ALL_REGIONS = 2 + CLIENT_AUTH = 3 class SelfManagedCertificate(proto.Message): r"""Certificate data for a SelfManaged Certificate. @@ -904,12 +931,12 @@ class SelfManagedCertificate(proto.Message): Attributes: pem_certificate (str): - Input only. The PEM-encoded certificate - chain. Leaf certificate comes first, followed by - intermediate ones if any. + Optional. Input only. The PEM-encoded + certificate chain. Leaf certificate comes first, + followed by intermediate ones if any. pem_private_key (str): - Input only. The PEM-encoded private key of - the leaf certificate. + Optional. Input only. The PEM-encoded private + key of the leaf certificate. """ pem_certificate: str = proto.Field( @@ -928,15 +955,15 @@ class ManagedCertificate(proto.Message): Attributes: domains (MutableSequence[str]): - Immutable. The domains for which a managed - SSL certificate will be generated. Wildcard - domains are only supported with DNS challenge - resolution. + Optional. Immutable. The domains for which a + managed SSL certificate will be generated. + Wildcard domains are only supported with DNS + challenge resolution. dns_authorizations (MutableSequence[str]): - Immutable. Authorizations that will be used - for performing domain authorization. + Optional. Immutable. Authorizations that will + be used for performing domain authorization. issuance_config (str): - Immutable. The resource name for a + Optional. Immutable. The resource name for a [CertificateIssuanceConfig][google.cloud.certificatemanager.v1.CertificateIssuanceConfig] used to configure private PKI certificates in the format ``projects/*/locations/*/certificateIssuanceConfigs/*``. If @@ -1034,7 +1061,8 @@ class AuthorizationAttemptInfo(proto.Message): Attributes: domain (str): - Domain name of the authorization attempt. + Output only. Domain name of the authorization + attempt. state (google.cloud.certificate_manager_v1.types.Certificate.ManagedCertificate.AuthorizationAttemptInfo.State): Output only. State of the domain for managed certificate issuance. @@ -1047,6 +1075,13 @@ class AuthorizationAttemptInfo(proto.Message): configuration issues. Not guaranteed to be stable. For programmatic access use FailureReason enum. + attempt_time (google.protobuf.timestamp_pb2.Timestamp): + Output only. The timestamp, when the + authorization attempt was made. + troubleshooting (google.cloud.certificate_manager_v1.types.Certificate.ManagedCertificate.AuthorizationAttemptInfo.Troubleshooting): + Output only. Troubleshooting information for + the authorization attempt. This field is only + populated if the authorization attempt failed. """ class State(proto.Enum): @@ -1099,6 +1134,134 @@ class FailureReason(proto.Enum): CAA = 2 RATE_LIMITED = 3 + class Troubleshooting(proto.Message): + r"""Troubleshooting information for the authorization attempt. + + Attributes: + issues (MutableSequence[google.cloud.certificate_manager_v1.types.Certificate.ManagedCertificate.AuthorizationAttemptInfo.Troubleshooting.Issue]): + Output only. The list of issues discovered + during the authorization attempt. + cname (google.cloud.certificate_manager_v1.types.Certificate.ManagedCertificate.AuthorizationAttemptInfo.Troubleshooting.CNAME): + Output only. CNAME troubleshooting + information. + ips (google.cloud.certificate_manager_v1.types.Certificate.ManagedCertificate.AuthorizationAttemptInfo.Troubleshooting.IPs): + Output only. IPs troubleshooting information. + """ + + class Issue(proto.Enum): + r"""The issue discovered during the authorization attempt. + + Values: + ISSUE_UNSPECIFIED (0): + Issue is unspecified. + CNAME_MISMATCH (1): + The resolved CNAME value doesn't match the + expected CNAME. + RESOLVED_TO_NOT_SERVING (2): + Domain has A/AAAA records that point to IPs, + where the certificate is not attached. + RESOLVED_TO_SERVING_ON_ALT_PORTS (3): + Domain has A/AAAA records that point to IPs, + where the certificate is attached, but port 443 + is not open. + NO_RESOLVED_IPS (4): + Domain doesn't have any A/AAAA records. + CERTIFICATE_NOT_ATTACHED (5): + Certificate is not configured to be served + from any IPs (e.g. Certificate is not attached + to any load balancer). + """ + + ISSUE_UNSPECIFIED = 0 + CNAME_MISMATCH = 1 + RESOLVED_TO_NOT_SERVING = 2 + RESOLVED_TO_SERVING_ON_ALT_PORTS = 3 + NO_RESOLVED_IPS = 4 + CERTIFICATE_NOT_ATTACHED = 5 + + class CNAME(proto.Message): + r"""CNAME troubleshooting information. + + Attributes: + name (str): + Output only. The name of the CNAME record for the domain, + equals to ``dns_resource_record.name`` in the corresponding + ``DnsAuthorization``. + expected_data (str): + Output only. The expected value of the CNAME record for the + domain, equals to ``dns_resource_record.data`` in the + corresponding ``DnsAuthorization``. + resolved_data (MutableSequence[str]): + Output only. The resolved CNAME chain. Empty list if the + CNAME record for ``CNAME.name`` is not found. Otherwise the + first item is the value of the CNAME record for + ``CNAME.name``. If the CNAME chain is longer, the second + item is the value of the CNAME record for the first item, + and so on. + """ + + name: str = proto.Field( + proto.STRING, + number=1, + ) + expected_data: str = proto.Field( + proto.STRING, + number=2, + ) + resolved_data: MutableSequence[str] = proto.RepeatedField( + proto.STRING, + number=3, + ) + + class IPs(proto.Message): + r"""IPs troubleshooting information. + + Attributes: + serving (MutableSequence[str]): + Output only. The list of IP addresses, where + the certificate is attached and port 443 is + open. + serving_on_alt_ports (MutableSequence[str]): + Output only. The list of IP addresses, where + the certificate is attached, but port 443 is not + open. + resolved (MutableSequence[str]): + Output only. The list of IP addresses + resolved from the domain's A/AAAA records. Can + contain both ipv4 and ipv6 addresses. + """ + + serving: MutableSequence[str] = proto.RepeatedField( + proto.STRING, + number=1, + ) + serving_on_alt_ports: MutableSequence[str] = proto.RepeatedField( + proto.STRING, + number=2, + ) + resolved: MutableSequence[str] = proto.RepeatedField( + proto.STRING, + number=3, + ) + + issues: MutableSequence[ + "Certificate.ManagedCertificate.AuthorizationAttemptInfo.Troubleshooting.Issue" + ] = proto.RepeatedField( + proto.ENUM, + number=1, + enum="Certificate.ManagedCertificate.AuthorizationAttemptInfo.Troubleshooting.Issue", + ) + cname: "Certificate.ManagedCertificate.AuthorizationAttemptInfo.Troubleshooting.CNAME" = proto.Field( + proto.MESSAGE, + number=2, + message="Certificate.ManagedCertificate.AuthorizationAttemptInfo.Troubleshooting.CNAME", + ) + ips: "Certificate.ManagedCertificate.AuthorizationAttemptInfo.Troubleshooting.IPs" = proto.Field( + proto.MESSAGE, + number=3, + message="Certificate.ManagedCertificate.AuthorizationAttemptInfo.Troubleshooting.IPs", + ) + domain: str = proto.Field( proto.STRING, number=1, @@ -1117,6 +1280,16 @@ class FailureReason(proto.Enum): proto.STRING, number=4, ) + attempt_time: timestamp_pb2.Timestamp = proto.Field( + proto.MESSAGE, + number=5, + message=timestamp_pb2.Timestamp, + ) + troubleshooting: "Certificate.ManagedCertificate.AuthorizationAttemptInfo.Troubleshooting" = proto.Field( + proto.MESSAGE, + number=6, + message="Certificate.ManagedCertificate.AuthorizationAttemptInfo.Troubleshooting", + ) domains: MutableSequence[str] = proto.RepeatedField( proto.STRING, @@ -1150,6 +1323,58 @@ class FailureReason(proto.Enum): message="Certificate.ManagedCertificate.AuthorizationAttemptInfo", ) + class ManagedIdentityCertificate(proto.Message): + r"""Configuration and state of a Managed Identity Certificate. + Certificate Manager provisions and renews Managed Identity + Certificates automatically, for as long as it's authorized to do + so. + + Attributes: + identity (str): + Required. Immutable. SPIFFE ID of the Managed + Identity used for this certificate. + state (google.cloud.certificate_manager_v1.types.Certificate.ManagedCertificate.State): + Output only. State of the managed certificate + resource. + provisioning_issue (google.cloud.certificate_manager_v1.types.Certificate.ManagedCertificate.ProvisioningIssue): + Output only. Information about issues with + provisioning a managed certificate. + """ + + identity: str = proto.Field( + proto.STRING, + number=1, + ) + state: "Certificate.ManagedCertificate.State" = proto.Field( + proto.ENUM, + number=2, + enum="Certificate.ManagedCertificate.State", + ) + provisioning_issue: "Certificate.ManagedCertificate.ProvisioningIssue" = ( + proto.Field( + proto.MESSAGE, + number=3, + message="Certificate.ManagedCertificate.ProvisioningIssue", + ) + ) + + class UsedBy(proto.Message): + r"""Defines a resource that uses the certificate. + + Attributes: + name (str): + Output only. Full name of the resource + https://google.aip.dev/122#full-resource-names, e.g. + ``//certificatemanager.googleapis.com/projects/*/locations/*/certificateMaps/*/certificateMapEntries/*`` + or + ``//compute.googleapis.com/projects/*/locations/*/targetHttpsProxies/*``. + """ + + name: str = proto.Field( + proto.STRING, + number=1, + ) + name: str = proto.Field( proto.STRING, number=1, @@ -1185,6 +1410,12 @@ class FailureReason(proto.Enum): oneof="type", message=ManagedCertificate, ) + managed_identity: ManagedIdentityCertificate = proto.Field( + proto.MESSAGE, + number=18, + oneof="type", + message=ManagedIdentityCertificate, + ) san_dnsnames: MutableSequence[str] = proto.RepeatedField( proto.STRING, number=6, @@ -1203,6 +1434,16 @@ class FailureReason(proto.Enum): number=12, enum=Scope, ) + used_by: MutableSequence[UsedBy] = proto.RepeatedField( + proto.MESSAGE, + number=15, + message=UsedBy, + ) + tags: MutableMapping[str, str] = proto.MapField( + proto.STRING, + proto.STRING, + number=17, + ) class CertificateMap(proto.Message): @@ -1210,12 +1451,12 @@ class CertificateMap(proto.Message): Attributes: name (str): - A user-defined name of the Certificate Map. Certificate Map - names must be unique globally and match pattern - ``projects/*/locations/*/certificateMaps/*``. + Identifier. A user-defined name of the Certificate Map. + Certificate Map names must be unique globally and match + pattern ``projects/*/locations/*/certificateMaps/*``. description (str): - One or more paragraphs of text description of - a certificate map. + Optional. One or more paragraphs of text + description of a certificate map. create_time (google.protobuf.timestamp_pb2.Timestamp): Output only. The creation timestamp of a Certificate Map. @@ -1223,13 +1464,20 @@ class CertificateMap(proto.Message): Output only. The update timestamp of a Certificate Map. labels (MutableMapping[str, str]): - Set of labels associated with a Certificate - Map. + Optional. Set of labels associated with a + Certificate Map. gclb_targets (MutableSequence[google.cloud.certificate_manager_v1.types.CertificateMap.GclbTarget]): Output only. A list of GCLB targets that use this Certificate Map. A Target Proxy is only present on this list if it's attached to a Forwarding Rule. + tags (MutableMapping[str, str]): + Optional. Input only. Immutable. Tag + keys/values directly bound to this resource. For + example: + + "123/environment": "production", + "123/costCenter": "marketing". """ class GclbTarget(proto.Message): @@ -1327,6 +1575,11 @@ class IpConfig(proto.Message): number=4, message=GclbTarget, ) + tags: MutableMapping[str, str] = proto.MapField( + proto.STRING, + proto.STRING, + number=7, + ) class CertificateMapEntry(proto.Message): @@ -1341,13 +1594,13 @@ class CertificateMapEntry(proto.Message): Attributes: name (str): - A user-defined name of the Certificate Map Entry. - Certificate Map Entry names must be unique globally and - match pattern + Identifier. A user-defined name of the Certificate Map + Entry. Certificate Map Entry names must be unique globally + and match pattern ``projects/*/locations/*/certificateMaps/*/certificateMapEntries/*``. description (str): - One or more paragraphs of text description of - a certificate map entry. + Optional. One or more paragraphs of text + description of a certificate map entry. create_time (google.protobuf.timestamp_pb2.Timestamp): Output only. The creation timestamp of a Certificate Map Entry. @@ -1355,8 +1608,8 @@ class CertificateMapEntry(proto.Message): Output only. The update timestamp of a Certificate Map Entry. labels (MutableMapping[str, str]): - Set of labels associated with a Certificate - Map Entry. + Optional. Set of labels associated with a + Certificate Map Entry. hostname (str): A Hostname (FQDN, e.g. ``example.com``) or a wildcard hostname expression (``*.example.com``) for a set of @@ -1370,10 +1623,10 @@ class CertificateMapEntry(proto.Message): This field is a member of `oneof`_ ``match``. certificates (MutableSequence[str]): - A set of Certificates defines for the given ``hostname``. - There can be defined up to four certificates in each - Certificate Map Entry. Each certificate must match pattern - ``projects/*/locations/*/certificates/*``. + Optional. A set of Certificates defines for the given + ``hostname``. There can be defined up to four certificates + in each Certificate Map Entry. Each certificate must match + pattern ``projects/*/locations/*/certificates/*``. state (google.cloud.certificate_manager_v1.types.ServingState): Output only. A serving state of this Certificate Map Entry. @@ -1446,7 +1699,7 @@ class DnsAuthorization(proto.Message): Attributes: name (str): - A user-defined name of the dns authorization. + Identifier. A user-defined name of the dns authorization. DnsAuthorization names must be unique globally and match pattern ``projects/*/locations/*/dnsAuthorizations/*``. create_time (google.protobuf.timestamp_pb2.Timestamp): @@ -1456,11 +1709,11 @@ class DnsAuthorization(proto.Message): Output only. The last update timestamp of a DnsAuthorization. labels (MutableMapping[str, str]): - Set of labels associated with a + Optional. Set of labels associated with a DnsAuthorization. description (str): - One or more paragraphs of text description of - a DnsAuthorization. + Optional. One or more paragraphs of text + description of a DnsAuthorization. domain (str): Required. Immutable. A domain that is being authorized. A DnsAuthorization resource covers a single domain and its @@ -1471,10 +1724,18 @@ class DnsAuthorization(proto.Message): Output only. DNS Resource Record that needs to be added to DNS configuration. type_ (google.cloud.certificate_manager_v1.types.DnsAuthorization.Type): - Immutable. Type of DnsAuthorization. If unset during - resource creation the following default will be used: - - - in location global: FIXED_RECORD. + Optional. Immutable. Type of DnsAuthorization. If unset + during resource creation the following default will be used: + + - in location ``global``: FIXED_RECORD, + - in other locations: PER_PROJECT_RECORD. + tags (MutableMapping[str, str]): + Optional. Input only. Immutable. Tag + keys/values directly bound to this resource. For + example: + + "123/environment": "production", + "123/costCenter": "marketing". """ class Type(proto.Enum): @@ -1562,6 +1823,11 @@ class DnsResourceRecord(proto.Message): number=11, enum=Type, ) + tags: MutableMapping[str, str] = proto.MapField( + proto.STRING, + proto.STRING, + number=12, + ) __all__ = tuple(sorted(__protobuf__.manifest)) diff --git a/packages/google-cloud-certificate-manager/google/cloud/certificate_manager_v1/types/trust_config.py b/packages/google-cloud-certificate-manager/google/cloud/certificate_manager_v1/types/trust_config.py index b50a5b36dbe3..2b86be856a56 100644 --- a/packages/google-cloud-certificate-manager/google/cloud/certificate_manager_v1/types/trust_config.py +++ b/packages/google-cloud-certificate-manager/google/cloud/certificate_manager_v1/types/trust_config.py @@ -44,20 +44,20 @@ class ListTrustConfigsRequest(proto.Message): TrustConfigs should be listed, specified in the format ``projects/*/locations/*``. page_size (int): - Maximum number of TrustConfigs to return per - call. + Optional. Maximum number of TrustConfigs to + return per call. page_token (str): - The value returned by the last ``ListTrustConfigsResponse``. - Indicates that this is a continuation of a prior - ``ListTrustConfigs`` call, and that the system should return - the next page of data. + Optional. The value returned by the last + ``ListTrustConfigsResponse``. Indicates that this is a + continuation of a prior ``ListTrustConfigs`` call, and that + the system should return the next page of data. filter (str): - Filter expression to restrict the + Optional. Filter expression to restrict the TrustConfigs returned. order_by (str): - A list of TrustConfig field names used to specify the order - of the returned results. The default sorting order is - ascending. To specify descending order for a field, add a + Optional. A list of TrustConfig field names used to specify + the order of the returned results. The default sorting order + is ascending. To specify descending order for a field, add a suffix ``" desc"``. """ @@ -196,10 +196,11 @@ class DeleteTrustConfigRequest(proto.Message): Required. A name of the TrustConfig to delete. Must be in the format ``projects/*/locations/*/trustConfigs/*``. etag (str): - The current etag of the TrustConfig. - If an etag is provided and does not match the - current etag of the resource, deletion will be - blocked and an ABORTED error will be returned. + Optional. The current etag of the + TrustConfig. If an etag is provided and does not + match the current etag of the resource, deletion + will be blocked and an ABORTED error will be + returned. """ name: str = proto.Field( @@ -217,8 +218,8 @@ class TrustConfig(proto.Message): Attributes: name (str): - A user-defined name of the trust config. TrustConfig names - must be unique globally and match pattern + Identifier. A user-defined name of the trust config. + TrustConfig names must be unique globally and match pattern ``projects/*/locations/*/trustConfigs/*``. create_time (google.protobuf.timestamp_pb2.Timestamp): Output only. The creation timestamp of a @@ -227,24 +228,43 @@ class TrustConfig(proto.Message): Output only. The last update timestamp of a TrustConfig. labels (MutableMapping[str, str]): - Set of labels associated with a TrustConfig. + Optional. Set of labels associated with a + TrustConfig. description (str): - One or more paragraphs of text description of - a TrustConfig. + Optional. One or more paragraphs of text + description of a TrustConfig. etag (str): This checksum is computed by the server based on the value of other fields, and may be sent on update and delete requests to ensure the client has an up-to-date value before proceeding. + spiffe_trust_stores (MutableMapping[str, google.cloud.certificate_manager_v1.types.TrustConfig.TrustStore]): + Optional. Defines a mapping from a trust + domain to a TrustStore. This is used for SPIFFE + certificate validation. trust_stores (MutableSequence[google.cloud.certificate_manager_v1.types.TrustConfig.TrustStore]): - Set of trust stores to perform validation - against. + Optional. Set of trust stores to perform + validation against. This field is supported when TrustConfig is configured with Load Balancers, currently not supported for SPIFFE certificate validation. Only one TrustStore specified is currently allowed. + allowlisted_certificates (MutableSequence[google.cloud.certificate_manager_v1.types.TrustConfig.AllowlistedCertificate]): + Optional. A certificate matching an + allowlisted certificate is always considered + valid as long as the certificate is parseable, + proof of private key possession is established, + and constraints on the certificate's SAN field + are met. + tags (MutableMapping[str, str]): + Optional. Input only. Immutable. Tag + keys/values directly bound to this resource. For + example: + + "123/environment": "production", + "123/costCenter": "marketing". """ class TrustAnchor(proto.Message): @@ -295,12 +315,13 @@ class TrustStore(proto.Message): Attributes: trust_anchors (MutableSequence[google.cloud.certificate_manager_v1.types.TrustConfig.TrustAnchor]): - List of Trust Anchors to be used while - performing validation against a given + Optional. List of Trust Anchors to be used + while performing validation against a given TrustStore. intermediate_cas (MutableSequence[google.cloud.certificate_manager_v1.types.TrustConfig.IntermediateCA]): - Set of intermediate CA certificates used for - the path building phase of chain validation. + Optional. Set of intermediate CA certificates + used for the path building phase of chain + validation. The field is currently not supported if TrustConfig is used for the workload certificate @@ -320,6 +341,22 @@ class TrustStore(proto.Message): ) ) + class AllowlistedCertificate(proto.Message): + r"""Defines an allowlisted certificate. + + Attributes: + pem_certificate (str): + Required. PEM certificate that is + allowlisted. The certificate can be up to 5k + bytes, and must be a parseable X.509 + certificate. + """ + + pem_certificate: str = proto.Field( + proto.STRING, + number=1, + ) + name: str = proto.Field( proto.STRING, number=1, @@ -347,11 +384,29 @@ class TrustStore(proto.Message): proto.STRING, number=6, ) + spiffe_trust_stores: MutableMapping[str, TrustStore] = proto.MapField( + proto.STRING, + proto.MESSAGE, + number=7, + message=TrustStore, + ) trust_stores: MutableSequence[TrustStore] = proto.RepeatedField( proto.MESSAGE, number=8, message=TrustStore, ) + allowlisted_certificates: MutableSequence[AllowlistedCertificate] = ( + proto.RepeatedField( + proto.MESSAGE, + number=9, + message=AllowlistedCertificate, + ) + ) + tags: MutableMapping[str, str] = proto.MapField( + proto.STRING, + proto.STRING, + number=10, + ) __all__ = tuple(sorted(__protobuf__.manifest)) diff --git a/packages/google-cloud-certificate-manager/samples/generated_samples/certificatemanager_v1_generated_certificate_manager_update_certificate_issuance_config_async.py b/packages/google-cloud-certificate-manager/samples/generated_samples/certificatemanager_v1_generated_certificate_manager_update_certificate_issuance_config_async.py new file mode 100644 index 000000000000..6c97fb5ce66f --- /dev/null +++ b/packages/google-cloud-certificate-manager/samples/generated_samples/certificatemanager_v1_generated_certificate_manager_update_certificate_issuance_config_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 UpdateCertificateIssuanceConfig +# 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-certificate-manager + + +# [START certificatemanager_v1_generated_CertificateManager_UpdateCertificateIssuanceConfig_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 certificate_manager_v1 + + +async def sample_update_certificate_issuance_config(): + # Create a client + client = certificate_manager_v1.CertificateManagerAsyncClient() + + # Initialize request argument(s) + certificate_issuance_config = certificate_manager_v1.CertificateIssuanceConfig() + certificate_issuance_config.certificate_authority_config.certificate_authority_service_config.ca_pool = "ca_pool_value" + certificate_issuance_config.rotation_window_percentage = 2788 + certificate_issuance_config.key_algorithm = "ECDSA_P256" + + request = certificate_manager_v1.UpdateCertificateIssuanceConfigRequest( + certificate_issuance_config=certificate_issuance_config, + ) + + # Make the request + operation = await client.update_certificate_issuance_config(request=request) + + print("Waiting for operation to complete...") + + response = await operation.result() + + # Handle the response + print(response) + + +# [END certificatemanager_v1_generated_CertificateManager_UpdateCertificateIssuanceConfig_async] diff --git a/packages/google-cloud-certificate-manager/samples/generated_samples/certificatemanager_v1_generated_certificate_manager_update_certificate_issuance_config_sync.py b/packages/google-cloud-certificate-manager/samples/generated_samples/certificatemanager_v1_generated_certificate_manager_update_certificate_issuance_config_sync.py new file mode 100644 index 000000000000..1c15dc6a539d --- /dev/null +++ b/packages/google-cloud-certificate-manager/samples/generated_samples/certificatemanager_v1_generated_certificate_manager_update_certificate_issuance_config_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 UpdateCertificateIssuanceConfig +# 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-certificate-manager + + +# [START certificatemanager_v1_generated_CertificateManager_UpdateCertificateIssuanceConfig_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 certificate_manager_v1 + + +def sample_update_certificate_issuance_config(): + # Create a client + client = certificate_manager_v1.CertificateManagerClient() + + # Initialize request argument(s) + certificate_issuance_config = certificate_manager_v1.CertificateIssuanceConfig() + certificate_issuance_config.certificate_authority_config.certificate_authority_service_config.ca_pool = "ca_pool_value" + certificate_issuance_config.rotation_window_percentage = 2788 + certificate_issuance_config.key_algorithm = "ECDSA_P256" + + request = certificate_manager_v1.UpdateCertificateIssuanceConfigRequest( + certificate_issuance_config=certificate_issuance_config, + ) + + # Make the request + operation = client.update_certificate_issuance_config(request=request) + + print("Waiting for operation to complete...") + + response = operation.result() + + # Handle the response + print(response) + + +# [END certificatemanager_v1_generated_CertificateManager_UpdateCertificateIssuanceConfig_sync] diff --git a/packages/google-cloud-certificate-manager/samples/generated_samples/snippet_metadata_google.cloud.certificatemanager.v1.json b/packages/google-cloud-certificate-manager/samples/generated_samples/snippet_metadata_google.cloud.certificatemanager.v1.json index bfd84a5add02..0ddb6b75abe7 100644 --- a/packages/google-cloud-certificate-manager/samples/generated_samples/snippet_metadata_google.cloud.certificatemanager.v1.json +++ b/packages/google-cloud-certificate-manager/samples/generated_samples/snippet_metadata_google.cloud.certificatemanager.v1.json @@ -3971,6 +3971,175 @@ ], "title": "certificatemanager_v1_generated_certificate_manager_list_trust_configs_sync.py" }, + { + "canonical": true, + "clientMethod": { + "async": true, + "client": { + "fullName": "google.cloud.certificate_manager_v1.CertificateManagerAsyncClient", + "shortName": "CertificateManagerAsyncClient" + }, + "fullName": "google.cloud.certificate_manager_v1.CertificateManagerAsyncClient.update_certificate_issuance_config", + "method": { + "fullName": "google.cloud.certificatemanager.v1.CertificateManager.UpdateCertificateIssuanceConfig", + "service": { + "fullName": "google.cloud.certificatemanager.v1.CertificateManager", + "shortName": "CertificateManager" + }, + "shortName": "UpdateCertificateIssuanceConfig" + }, + "parameters": [ + { + "name": "request", + "type": "google.cloud.certificate_manager_v1.types.UpdateCertificateIssuanceConfigRequest" + }, + { + "name": "certificate_issuance_config", + "type": "google.cloud.certificate_manager_v1.types.CertificateIssuanceConfig" + }, + { + "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.api_core.operation_async.AsyncOperation", + "shortName": "update_certificate_issuance_config" + }, + "description": "Sample for UpdateCertificateIssuanceConfig", + "file": "certificatemanager_v1_generated_certificate_manager_update_certificate_issuance_config_async.py", + "language": "PYTHON", + "origin": "API_DEFINITION", + "regionTag": "certificatemanager_v1_generated_CertificateManager_UpdateCertificateIssuanceConfig_async", + "segments": [ + { + "end": 60, + "start": 27, + "type": "FULL" + }, + { + "end": 60, + "start": 27, + "type": "SHORT" + }, + { + "end": 40, + "start": 38, + "type": "CLIENT_INITIALIZATION" + }, + { + "end": 50, + "start": 41, + "type": "REQUEST_INITIALIZATION" + }, + { + "end": 57, + "start": 51, + "type": "REQUEST_EXECUTION" + }, + { + "end": 61, + "start": 58, + "type": "RESPONSE_HANDLING" + } + ], + "title": "certificatemanager_v1_generated_certificate_manager_update_certificate_issuance_config_async.py" + }, + { + "canonical": true, + "clientMethod": { + "client": { + "fullName": "google.cloud.certificate_manager_v1.CertificateManagerClient", + "shortName": "CertificateManagerClient" + }, + "fullName": "google.cloud.certificate_manager_v1.CertificateManagerClient.update_certificate_issuance_config", + "method": { + "fullName": "google.cloud.certificatemanager.v1.CertificateManager.UpdateCertificateIssuanceConfig", + "service": { + "fullName": "google.cloud.certificatemanager.v1.CertificateManager", + "shortName": "CertificateManager" + }, + "shortName": "UpdateCertificateIssuanceConfig" + }, + "parameters": [ + { + "name": "request", + "type": "google.cloud.certificate_manager_v1.types.UpdateCertificateIssuanceConfigRequest" + }, + { + "name": "certificate_issuance_config", + "type": "google.cloud.certificate_manager_v1.types.CertificateIssuanceConfig" + }, + { + "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.api_core.operation.Operation", + "shortName": "update_certificate_issuance_config" + }, + "description": "Sample for UpdateCertificateIssuanceConfig", + "file": "certificatemanager_v1_generated_certificate_manager_update_certificate_issuance_config_sync.py", + "language": "PYTHON", + "origin": "API_DEFINITION", + "regionTag": "certificatemanager_v1_generated_CertificateManager_UpdateCertificateIssuanceConfig_sync", + "segments": [ + { + "end": 60, + "start": 27, + "type": "FULL" + }, + { + "end": 60, + "start": 27, + "type": "SHORT" + }, + { + "end": 40, + "start": 38, + "type": "CLIENT_INITIALIZATION" + }, + { + "end": 50, + "start": 41, + "type": "REQUEST_INITIALIZATION" + }, + { + "end": 57, + "start": 51, + "type": "REQUEST_EXECUTION" + }, + { + "end": 61, + "start": 58, + "type": "RESPONSE_HANDLING" + } + ], + "title": "certificatemanager_v1_generated_certificate_manager_update_certificate_issuance_config_sync.py" + }, { "canonical": true, "clientMethod": { diff --git a/packages/google-cloud-certificate-manager/tests/unit/gapic/certificate_manager_v1/test_certificate_manager.py b/packages/google-cloud-certificate-manager/tests/unit/gapic/certificate_manager_v1/test_certificate_manager.py index 98ab0b744600..5c1f928f828c 100644 --- a/packages/google-cloud-certificate-manager/tests/unit/gapic/certificate_manager_v1/test_certificate_manager.py +++ b/packages/google-cloud-certificate-manager/tests/unit/gapic/certificate_manager_v1/test_certificate_manager.py @@ -10380,6 +10380,379 @@ async def test_create_certificate_issuance_config_flattened_error_async(): ) +@pytest.mark.parametrize( + "request_type", + [ + gcc_certificate_issuance_config.UpdateCertificateIssuanceConfigRequest(), + {}, + ], +) +def test_update_certificate_issuance_config(request_type, transport: str = "grpc"): + client = CertificateManagerClient( + 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_certificate_issuance_config), "__call__" + ) as call: + # Designate an appropriate return value for the call. + call.return_value = operations_pb2.Operation(name="operations/spam") + response = client.update_certificate_issuance_config(request) + + # Establish that the underlying gRPC stub method was called. + assert len(call.mock_calls) == 1 + _, args, _ = call.mock_calls[0] + request = ( + gcc_certificate_issuance_config.UpdateCertificateIssuanceConfigRequest() + ) + assert args[0] == request + + # Establish that the response is the type that we expect. + assert isinstance(response, future.Future) + + +def test_update_certificate_issuance_config_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 = CertificateManagerClient( + 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 = gcc_certificate_issuance_config.UpdateCertificateIssuanceConfigRequest() + + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.update_certificate_issuance_config), "__call__" + ) as call: + call.return_value.name = ( + "foo" # operation_request.operation in compute client(s) expect a string. + ) + client.update_certificate_issuance_config(request=request) + call.assert_called() + _, args, _ = call.mock_calls[0] + request_msg = ( + gcc_certificate_issuance_config.UpdateCertificateIssuanceConfigRequest() + ) + assert args[0] == request_msg + + +def test_update_certificate_issuance_config_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 = CertificateManagerClient( + 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_certificate_issuance_config + 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_certificate_issuance_config + ] = mock_rpc + request = {} + client.update_certificate_issuance_config(request) + + # Establish that the underlying gRPC stub method was called. + assert mock_rpc.call_count == 1 + + # Operation methods call wrapper_fn to build a cached + # client._transport.operations_client instance on first rpc call. + # Subsequent calls should use the cached wrapper + wrapper_fn.reset_mock() + + client.update_certificate_issuance_config(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_certificate_issuance_config_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 = CertificateManagerAsyncClient( + 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_certificate_issuance_config + 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_certificate_issuance_config + ] = mock_rpc + + request = {} + await client.update_certificate_issuance_config(request) + + # Establish that the underlying gRPC stub method was called. + assert mock_rpc.call_count == 1 + + # Operation methods call wrapper_fn to build a cached + # client._transport.operations_client instance on first rpc call. + # Subsequent calls should use the cached wrapper + wrapper_fn.reset_mock() + + await client.update_certificate_issuance_config(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", + [ + gcc_certificate_issuance_config.UpdateCertificateIssuanceConfigRequest(), + {}, + ], +) +async def test_update_certificate_issuance_config_async( + request_type, transport: str = "grpc_asyncio" +): + client = CertificateManagerAsyncClient( + 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_certificate_issuance_config), "__call__" + ) as call: + # Designate an appropriate return value for the call. + call.return_value = grpc_helpers_async.FakeUnaryUnaryCall( + operations_pb2.Operation(name="operations/spam") + ) + response = await client.update_certificate_issuance_config(request) + + # Establish that the underlying gRPC stub method was called. + assert len(call.mock_calls) + _, args, _ = call.mock_calls[0] + request = ( + gcc_certificate_issuance_config.UpdateCertificateIssuanceConfigRequest() + ) + assert args[0] == request + + # Establish that the response is the type that we expect. + assert isinstance(response, future.Future) + + +def test_update_certificate_issuance_config_field_headers(): + client = CertificateManagerClient( + 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 = gcc_certificate_issuance_config.UpdateCertificateIssuanceConfigRequest() + + request.certificate_issuance_config.name = "name_value" + + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.update_certificate_issuance_config), "__call__" + ) as call: + call.return_value = operations_pb2.Operation(name="operations/op") + client.update_certificate_issuance_config(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", + "certificate_issuance_config.name=name_value", + ) in kw["metadata"] + + +@pytest.mark.asyncio +async def test_update_certificate_issuance_config_field_headers_async(): + client = CertificateManagerAsyncClient( + 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 = gcc_certificate_issuance_config.UpdateCertificateIssuanceConfigRequest() + + request.certificate_issuance_config.name = "name_value" + + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.update_certificate_issuance_config), "__call__" + ) as call: + call.return_value = grpc_helpers_async.FakeUnaryUnaryCall( + operations_pb2.Operation(name="operations/op") + ) + await client.update_certificate_issuance_config(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", + "certificate_issuance_config.name=name_value", + ) in kw["metadata"] + + +def test_update_certificate_issuance_config_flattened(): + client = CertificateManagerClient( + credentials=ga_credentials.AnonymousCredentials(), + ) + + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.update_certificate_issuance_config), "__call__" + ) as call: + # Designate an appropriate return value for the call. + call.return_value = operations_pb2.Operation(name="operations/op") + # Call the method with a truthy value for each flattened field, + # using the keyword arguments to the method. + client.update_certificate_issuance_config( + certificate_issuance_config=gcc_certificate_issuance_config.CertificateIssuanceConfig( + 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].certificate_issuance_config + mock_val = gcc_certificate_issuance_config.CertificateIssuanceConfig( + 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_certificate_issuance_config_flattened_error(): + client = CertificateManagerClient( + 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_certificate_issuance_config( + gcc_certificate_issuance_config.UpdateCertificateIssuanceConfigRequest(), + certificate_issuance_config=gcc_certificate_issuance_config.CertificateIssuanceConfig( + name="name_value" + ), + update_mask=field_mask_pb2.FieldMask(paths=["paths_value"]), + ) + + +@pytest.mark.asyncio +async def test_update_certificate_issuance_config_flattened_async(): + client = CertificateManagerAsyncClient( + credentials=async_anonymous_credentials(), + ) + + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.update_certificate_issuance_config), "__call__" + ) as call: + # Designate an appropriate return value for the call. + call.return_value = operations_pb2.Operation(name="operations/op") + + call.return_value = grpc_helpers_async.FakeUnaryUnaryCall( + operations_pb2.Operation(name="operations/spam") + ) + # Call the method with a truthy value for each flattened field, + # using the keyword arguments to the method. + response = await client.update_certificate_issuance_config( + certificate_issuance_config=gcc_certificate_issuance_config.CertificateIssuanceConfig( + 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].certificate_issuance_config + mock_val = gcc_certificate_issuance_config.CertificateIssuanceConfig( + 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_certificate_issuance_config_flattened_error_async(): + client = CertificateManagerAsyncClient( + 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_certificate_issuance_config( + gcc_certificate_issuance_config.UpdateCertificateIssuanceConfigRequest(), + certificate_issuance_config=gcc_certificate_issuance_config.CertificateIssuanceConfig( + name="name_value" + ), + update_mask=field_mask_pb2.FieldMask(paths=["paths_value"]), + ) + + @pytest.mark.parametrize( "request_type", [ @@ -17261,6 +17634,190 @@ def test_create_certificate_issuance_config_rest_flattened_error( ) +def test_update_certificate_issuance_config_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 = CertificateManagerClient( + 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_certificate_issuance_config + 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_certificate_issuance_config + ] = mock_rpc + + request = {} + client.update_certificate_issuance_config(request) + + # Establish that the underlying gRPC stub method was called. + assert mock_rpc.call_count == 1 + + # Operation methods build a cached wrapper on first rpc call + # subsequent calls should use the cached wrapper + wrapper_fn.reset_mock() + + client.update_certificate_issuance_config(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_certificate_issuance_config_rest_required_fields( + request_type=gcc_certificate_issuance_config.UpdateCertificateIssuanceConfigRequest, +): + transport_class = transports.CertificateManagerRestTransport + + 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._BaseUpdateCertificateIssuanceConfig, + "_BaseUpdateCertificateIssuanceConfig__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 = CertificateManagerClient( + credentials=ga_credentials.AnonymousCredentials(), + transport="rest", + ) + request = request_type(**request_init) + + # Designate an appropriate value for the returned response. + return_value = operations_pb2.Operation(name="operations/spam") + # 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 + json_return_value = json_format.MessageToJson(return_value) + + response_value._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_certificate_issuance_config(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_certificate_issuance_config_rest_flattened(): + client = CertificateManagerClient( + 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 = operations_pb2.Operation(name="operations/spam") + + # get arguments that satisfy an http rule for this method + sample_request = { + "certificate_issuance_config": { + "name": "projects/sample1/locations/sample2/certificateIssuanceConfigs/sample3" + } + } + + # get truthy value for each flattened field + mock_args = dict( + certificate_issuance_config=gcc_certificate_issuance_config.CertificateIssuanceConfig( + 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 + json_return_value = json_format.MessageToJson(return_value) + response_value._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_certificate_issuance_config(**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/v1/{certificate_issuance_config.name=projects/*/locations/*/certificateIssuanceConfigs/*}" + % client.transport._host, + args[1], + ) + + +def test_update_certificate_issuance_config_rest_flattened_error( + transport: str = "rest", +): + client = CertificateManagerClient( + 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_certificate_issuance_config( + gcc_certificate_issuance_config.UpdateCertificateIssuanceConfigRequest(), + certificate_issuance_config=gcc_certificate_issuance_config.CertificateIssuanceConfig( + name="name_value" + ), + update_mask=field_mask_pb2.FieldMask(paths=["paths_value"]), + ) + + def test_delete_certificate_issuance_config_rest_use_cached_wrapped_rpc(): # Clients should use _prep_wrapped_messages to create cached wrapped rpcs, # instead of constructing them on each call @@ -19023,6 +19580,30 @@ def test_create_certificate_issuance_config_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_update_certificate_issuance_config_empty_call_grpc(): + client = CertificateManagerClient( + credentials=ga_credentials.AnonymousCredentials(), + transport="grpc", + ) + + # Mock the actual call, and fake the request. + with mock.patch.object( + type(client.transport.update_certificate_issuance_config), "__call__" + ) as call: + call.return_value = operations_pb2.Operation(name="operations/op") + client.update_certificate_issuance_config(request=None) + + # Establish that the underlying stub method was called. + call.assert_called() + _, args, _ = call.mock_calls[0] + request_msg = ( + gcc_certificate_issuance_config.UpdateCertificateIssuanceConfigRequest() + ) + 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_certificate_issuance_config_empty_call_grpc(): @@ -19808,6 +20389,34 @@ async def test_create_certificate_issuance_config_empty_call_grpc_asyncio(): 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_certificate_issuance_config_empty_call_grpc_asyncio(): + client = CertificateManagerAsyncClient( + credentials=async_anonymous_credentials(), + transport="grpc_asyncio", + ) + + # Mock the actual call, and fake the request. + with mock.patch.object( + type(client.transport.update_certificate_issuance_config), "__call__" + ) as call: + # Designate an appropriate return value for the call. + call.return_value = grpc_helpers_async.FakeUnaryUnaryCall( + operations_pb2.Operation(name="operations/spam") + ) + await client.update_certificate_issuance_config(request=None) + + # Establish that the underlying stub method was called. + call.assert_called() + _, args, _ = call.mock_calls[0] + request_msg = ( + gcc_certificate_issuance_config.UpdateCertificateIssuanceConfigRequest() + ) + 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 @@ -20322,13 +20931,40 @@ def test_create_certificate_rest_call_success(request_type): "state": 1, "failure_reason": 1, "details": "details_value", + "attempt_time": {}, + "troubleshooting": { + "issues": [1], + "cname": { + "name": "name_value", + "expected_data": "expected_data_value", + "resolved_data": [ + "resolved_data_value1", + "resolved_data_value2", + ], + }, + "ips": { + "serving": ["serving_value1", "serving_value2"], + "serving_on_alt_ports": [ + "serving_on_alt_ports_value1", + "serving_on_alt_ports_value2", + ], + "resolved": ["resolved_value1", "resolved_value2"], + }, + }, } ], }, + "managed_identity": { + "identity": "identity_value", + "state": 1, + "provisioning_issue": {}, + }, "san_dnsnames": ["san_dnsnames_value1", "san_dnsnames_value2"], "pem_certificate": "pem_certificate_value", "expire_time": {}, "scope": 1, + "used_by": [{"name": "name_value"}], + "tags": {}, } # 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 @@ -20556,13 +21192,40 @@ def test_update_certificate_rest_call_success(request_type): "state": 1, "failure_reason": 1, "details": "details_value", + "attempt_time": {}, + "troubleshooting": { + "issues": [1], + "cname": { + "name": "name_value", + "expected_data": "expected_data_value", + "resolved_data": [ + "resolved_data_value1", + "resolved_data_value2", + ], + }, + "ips": { + "serving": ["serving_value1", "serving_value2"], + "serving_on_alt_ports": [ + "serving_on_alt_ports_value1", + "serving_on_alt_ports_value2", + ], + "resolved": ["resolved_value1", "resolved_value2"], + }, + }, } ], }, + "managed_identity": { + "identity": "identity_value", + "state": 1, + "provisioning_issue": {}, + }, "san_dnsnames": ["san_dnsnames_value1", "san_dnsnames_value2"], "pem_certificate": "pem_certificate_value", "expire_time": {}, "scope": 1, + "used_by": [{"name": "name_value"}], + "tags": {}, } # 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 @@ -21173,6 +21836,7 @@ def test_create_certificate_map_rest_call_success(request_type): "ip_configs": [{"ip_address": "ip_address_value", "ports": [569, 570]}], } ], + "tags": {}, } # 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 @@ -21390,6 +22054,7 @@ def test_update_certificate_map_rest_call_success(request_type): "ip_configs": [{"ip_address": "ip_address_value", "ports": [569, 570]}], } ], + "tags": {}, } # 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 @@ -22874,6 +23539,7 @@ def test_create_dns_authorization_rest_call_success(request_type): "data": "data_value", }, "type_": 1, + "tags": {}, } # 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 @@ -23092,6 +23758,7 @@ def test_update_dns_authorization_rest_call_success(request_type): "data": "data_value", }, "type_": 1, + "tags": {}, } # 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 @@ -23737,6 +24404,7 @@ def test_create_certificate_issuance_config_rest_call_success(request_type): "lifetime": {"seconds": 751, "nanos": 543}, "rotation_window_percentage": 2788, "key_algorithm": 1, + "tags": {}, } # 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 @@ -23903,6 +24571,233 @@ def test_create_certificate_issuance_config_rest_interceptors(null_interceptor): post_with_metadata.assert_called_once() +def test_update_certificate_issuance_config_rest_bad_request( + request_type=gcc_certificate_issuance_config.UpdateCertificateIssuanceConfigRequest, +): + client = CertificateManagerClient( + credentials=ga_credentials.AnonymousCredentials(), transport="rest" + ) + # send a request that will satisfy transcoding + request_init = { + "certificate_issuance_config": { + "name": "projects/sample1/locations/sample2/certificateIssuanceConfigs/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_certificate_issuance_config(request) + + +@pytest.mark.parametrize( + "request_type", + [ + gcc_certificate_issuance_config.UpdateCertificateIssuanceConfigRequest, + dict, + ], +) +def test_update_certificate_issuance_config_rest_call_success(request_type): + client = CertificateManagerClient( + credentials=ga_credentials.AnonymousCredentials(), transport="rest" + ) + + # send a request that will satisfy transcoding + request_init = { + "certificate_issuance_config": { + "name": "projects/sample1/locations/sample2/certificateIssuanceConfigs/sample3" + } + } + request_init["certificate_issuance_config"] = { + "name": "projects/sample1/locations/sample2/certificateIssuanceConfigs/sample3", + "create_time": {"seconds": 751, "nanos": 543}, + "update_time": {}, + "labels": {}, + "description": "description_value", + "certificate_authority_config": { + "certificate_authority_service_config": {"ca_pool": "ca_pool_value"} + }, + "lifetime": {"seconds": 751, "nanos": 543}, + "rotation_window_percentage": 2788, + "key_algorithm": 1, + "tags": {}, + } + # 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 = gcc_certificate_issuance_config.UpdateCertificateIssuanceConfigRequest.meta.fields[ + "certificate_issuance_config" + ] + + 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[ + "certificate_issuance_config" + ].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["certificate_issuance_config"][field]) + ): + del request_init["certificate_issuance_config"][field][i][subfield] + else: + del request_init["certificate_issuance_config"][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 = operations_pb2.Operation(name="operations/spam") + + # 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.update_certificate_issuance_config(request) + + # Establish that the response is the type that we expect. + json_return_value = json_format.MessageToJson(return_value) + + +@pytest.mark.parametrize("null_interceptor", [True, False]) +def test_update_certificate_issuance_config_rest_interceptors(null_interceptor): + transport = transports.CertificateManagerRestTransport( + credentials=ga_credentials.AnonymousCredentials(), + interceptor=None + if null_interceptor + else transports.CertificateManagerRestInterceptor(), + ) + client = CertificateManagerClient(transport=transport) + + with ( + mock.patch.object(type(client.transport._session), "request") as req, + mock.patch.object(path_template, "transcode") as transcode, + mock.patch.object(operation.Operation, "_set_result_from_operation"), + mock.patch.object( + transports.CertificateManagerRestInterceptor, + "post_update_certificate_issuance_config", + ) as post, + mock.patch.object( + transports.CertificateManagerRestInterceptor, + "post_update_certificate_issuance_config_with_metadata", + ) as post_with_metadata, + mock.patch.object( + transports.CertificateManagerRestInterceptor, + "pre_update_certificate_issuance_config", + ) as pre, + ): + pre.assert_not_called() + post.assert_not_called() + post_with_metadata.assert_not_called() + pb_message = ( + gcc_certificate_issuance_config.UpdateCertificateIssuanceConfigRequest.pb( + gcc_certificate_issuance_config.UpdateCertificateIssuanceConfigRequest() + ) + ) + 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 = json_format.MessageToJson(operations_pb2.Operation()) + req.return_value.content = return_value + + request = ( + gcc_certificate_issuance_config.UpdateCertificateIssuanceConfigRequest() + ) + metadata = [ + ("key", "val"), + ("cephalopod", "squid"), + ] + pre.return_value = request, metadata + post.return_value = operations_pb2.Operation() + post_with_metadata.return_value = operations_pb2.Operation(), metadata + + client.update_certificate_issuance_config( + request, + metadata=[ + ("key", "val"), + ("cephalopod", "squid"), + ], + ) + + pre.assert_called_once() + post.assert_called_once() + post_with_metadata.assert_called_once() + + def test_delete_certificate_issuance_config_rest_bad_request( request_type=certificate_issuance_config.DeleteCertificateIssuanceConfigRequest, ): @@ -24357,12 +25252,15 @@ def test_create_trust_config_rest_call_success(request_type): "labels": {}, "description": "description_value", "etag": "etag_value", + "spiffe_trust_stores": {}, "trust_stores": [ { "trust_anchors": [{"pem_certificate": "pem_certificate_value"}], "intermediate_cas": [{"pem_certificate": "pem_certificate_value"}], } ], + "allowlisted_certificates": [{"pem_certificate": "pem_certificate_value"}], + "tags": {}, } # 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 @@ -24572,12 +25470,15 @@ def test_update_trust_config_rest_call_success(request_type): "labels": {}, "description": "description_value", "etag": "etag_value", + "spiffe_trust_stores": {}, "trust_stores": [ { "trust_anchors": [{"pem_certificate": "pem_certificate_value"}], "intermediate_cas": [{"pem_certificate": "pem_certificate_value"}], } ], + "allowlisted_certificates": [{"pem_certificate": "pem_certificate_value"}], + "tags": {}, } # 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 @@ -25724,6 +26625,29 @@ def test_create_certificate_issuance_config_empty_call_rest(): assert args[0] == request_msg +# This test is a coverage failsafe to make sure that totally empty calls, +# i.e. request == None and no flattened fields passed, work. +def test_update_certificate_issuance_config_empty_call_rest(): + client = CertificateManagerClient( + credentials=ga_credentials.AnonymousCredentials(), + transport="rest", + ) + + # Mock the actual call, and fake the request. + with mock.patch.object( + type(client.transport.update_certificate_issuance_config), "__call__" + ) as call: + client.update_certificate_issuance_config(request=None) + + # Establish that the underlying stub method was called. + call.assert_called() + _, args, _ = call.mock_calls[0] + request_msg = ( + gcc_certificate_issuance_config.UpdateCertificateIssuanceConfigRequest() + ) + 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_certificate_issuance_config_empty_call_rest(): @@ -25923,6 +26847,7 @@ def test_certificate_manager_base_transport(): "list_certificate_issuance_configs", "get_certificate_issuance_config", "create_certificate_issuance_config", + "update_certificate_issuance_config", "delete_certificate_issuance_config", "list_trust_configs", "get_trust_config", @@ -26276,6 +27201,9 @@ def test_certificate_manager_client_transport_session_collision(transport_name): session1 = client1.transport.create_certificate_issuance_config._session session2 = client2.transport.create_certificate_issuance_config._session assert session1 != session2 + session1 = client1.transport.update_certificate_issuance_config._session + session2 = client2.transport.update_certificate_issuance_config._session + assert session1 != session2 session1 = client1.transport.delete_certificate_issuance_config._session session2 = client2.transport.delete_certificate_issuance_config._session assert session1 != session2 diff --git a/packages/google-cloud-dialogflow/google/cloud/dialogflow/__init__.py b/packages/google-cloud-dialogflow/google/cloud/dialogflow/__init__.py index 88abf66c64ff..d6bb98fe4dba 100644 --- a/packages/google-cloud-dialogflow/google/cloud/dialogflow/__init__.py +++ b/packages/google-cloud-dialogflow/google/cloud/dialogflow/__init__.py @@ -431,6 +431,7 @@ MessageAnnotation, OutputAudio, Participant, + ResponseMessage, ServiceLatency, SmartReplyAnswer, StreamingAnalyzeContentRequest, @@ -829,6 +830,7 @@ "MessageAnnotation", "OutputAudio", "Participant", + "ResponseMessage", "ServiceLatency", "SmartReplyAnswer", "StreamingAnalyzeContentRequest", 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 12a8bc40fb23..ceab11d5d2f7 100644 --- a/packages/google-cloud-dialogflow/google/cloud/dialogflow_v2/__init__.py +++ b/packages/google-cloud-dialogflow/google/cloud/dialogflow_v2/__init__.py @@ -432,6 +432,7 @@ MessageAnnotation, OutputAudio, Participant, + ResponseMessage, ServiceLatency, SmartReplyAnswer, StreamingAnalyzeContentRequest, @@ -800,6 +801,7 @@ "QueryResult", "RaiSettings", "ReloadDocumentRequest", + "ResponseMessage", "RestoreAgentRequest", "SearchAgentsRequest", "SearchAgentsResponse", 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 1332ffcd840b..390460db4182 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 @@ -331,6 +331,7 @@ MessageAnnotation, OutputAudio, Participant, + ResponseMessage, ServiceLatency, SmartReplyAnswer, StreamingAnalyzeContentRequest, @@ -688,6 +689,7 @@ "MessageAnnotation", "OutputAudio", "Participant", + "ResponseMessage", "ServiceLatency", "SmartReplyAnswer", "StreamingAnalyzeContentRequest", 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 4049baa3a033..ca5086bad2f3 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 @@ -479,6 +479,11 @@ class InputAudioConfig(proto.Message): inherited from the ConversationProfile. This field is a member of `oneof`_ ``_use_gemini_asr``. + disable_interim_input_transcripts (bool): + Optional. Disables emission of interim input transcriptions + when set to ``true``. + + This field is a member of `oneof`_ ``_disable_interim_input_transcripts``. """ audio_encoding: "AudioEncoding" = proto.Field( @@ -550,6 +555,11 @@ class InputAudioConfig(proto.Message): number=31, optional=True, ) + disable_interim_input_transcripts: bool = proto.Field( + proto.BOOL, + number=32, + optional=True, + ) class VoiceSelectionParams(proto.Message): @@ -758,6 +768,9 @@ class SpeechToTextConfig(proto.Message): r"""Configures speech transcription for [ConversationProfile][google.cloud.dialogflow.v2.ConversationProfile]. + + .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields + Attributes: speech_model_variant (google.cloud.dialogflow_v2.types.SpeechModelVariant): The speech model used in speech to text. @@ -834,6 +847,11 @@ class SpeechToTextConfig(proto.Message): Optional. If true, Gemini ASR will be used for transcription instead of Cloud Speech-to-Text. + disable_interim_input_transcripts (bool): + Optional. Disables emission of interim input transcriptions + when set to ``true``. + + This field is a member of `oneof`_ ``_disable_interim_input_transcripts``. """ class GeminiAsrConfig(proto.Message): @@ -842,11 +860,6 @@ class GeminiAsrConfig(proto.Message): 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 @@ -894,10 +907,6 @@ class EndSensitivity(proto.Enum): 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, @@ -960,6 +969,11 @@ class EndSensitivity(proto.Enum): proto.BOOL, number=16, ) + disable_interim_input_transcripts: bool = proto.Field( + proto.BOOL, + number=17, + optional=True, + ) __all__ = tuple(sorted(__protobuf__.manifest)) 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 0290cc134960..9b906d039c5e 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 @@ -881,9 +881,11 @@ class SectionType(proto.Enum): cancellation. "N/A" otherwise. Section name: "reason_for_cancellation". CUSTOMER_SATISFACTION (5): - "Unsatisfied" or "Satisfied" depending on the customer's - feelings at the end of the conversation. Section name: - "customer_satisfaction". + Customer satisfaction derived from the text transcript only + (not audio). Categorized based on customer statements by the + end of the conversation. ``D`` for dissatisfied and ``N`` + for neutral or satisfied (default). Section name: + ``customer_satisfaction``. ENTITIES (6): Key entities extracted from the conversation, such as ticket number, order number, dollar 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 533d3026ebca..efd46ca741b2 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 @@ -520,9 +520,11 @@ class Type(proto.Enum): cancellation. "N/A" otherwise. Section name: "reason_for_cancellation". CUSTOMER_SATISFACTION (5): - "Unsatisfied" or "Satisfied" depending on the customer's - feelings at the end of the conversation. Section name: - "customer_satisfaction". + Customer satisfaction derived from the text transcript only + (not audio). Categorized based on customer statements by the + end of the conversation. ``D`` for dissatisfied and ``N`` + for neutral or satisfied (default). Section name: + ``customer_satisfaction``. ENTITIES (6): Key entities extracted from the conversation, such as ticket number, order number, dollar 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 2ba381676add..0331ac595820 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 @@ -72,6 +72,7 @@ "MessageAnnotation", "SuggestionInput", "AssistQueryParameters", + "ResponseMessage", "SuggestKnowledgeAssistRequest", "SuggestKnowledgeAssistResponse", "IngestedContextReferenceDebugInfo", @@ -314,6 +315,8 @@ class Message(proto.Message): content (str): Optional. The message content. Only one of ``content`` and ``companion_query`` should be set - not both. + response_messages (MutableSequence[google.cloud.dialogflow_v2.types.ResponseMessage]): + Optional. Automated agent responses. language_code (str): Optional. The message language. This should be a `BCP-47 `__ @@ -345,6 +348,11 @@ class Message(proto.Message): proto.STRING, number=2, ) + response_messages: MutableSequence["ResponseMessage"] = proto.RepeatedField( + proto.MESSAGE, + number=11, + message="ResponseMessage", + ) language_code: str = proto.Field( proto.STRING, number=3, @@ -1657,6 +1665,30 @@ class AutomatedAgentReply(proto.Message): Response of the Dialogflow [Sessions.DetectIntent][google.cloud.dialogflow.v2.Sessions.DetectIntent] call. + response_messages (MutableSequence[google.cloud.dialogflow_v2.types.ResponseMessage]): + Response messages from the automated agent. + intent (str): + Name of the intent if an intent is matched for the query. + For a V2 query, the value format is + ``projects//locations/ /agent/intents/``. + For a V3 query, the value format is + ``projects//locations/ /agents//intents/``. + event (str): + Event name if an event is triggered for the + query. + match_confidence (float): + The confidence of the match. Values range + from 0.0 (completely uncertain) to 1.0 + (completely certain). This value is for + informational purpose only and is only used to + help match the best intent within the + classification threshold. This value may change + for the same end-user expression at any time due + to a model retraining or change in + implementation. + parameters (google.protobuf.struct_pb2.Struct): + The collection of current parameters at the + time of this response. automated_agent_reply_type (google.cloud.dialogflow_v2.types.AutomatedAgentReply.AutomatedAgentReplyType): AutomatedAgentReply type. allow_cancellation (bool): @@ -1669,6 +1701,9 @@ class AutomatedAgentReply(proto.Message): The unique identifier of the current Dialogflow CX conversation page. Format: ``projects//locations//agents//flows//pages/``. + call_companion_auth_code (bytes): + The auth code for accessing Call Companion + UI. """ class AutomatedAgentReplyType(proto.Enum): @@ -1695,6 +1730,28 @@ class AutomatedAgentReplyType(proto.Enum): number=1, message=session.DetectIntentResponse, ) + response_messages: MutableSequence["ResponseMessage"] = proto.RepeatedField( + proto.MESSAGE, + number=3, + message="ResponseMessage", + ) + intent: str = proto.Field( + proto.STRING, + number=4, + ) + event: str = proto.Field( + proto.STRING, + number=5, + ) + match_confidence: float = proto.Field( + proto.FLOAT, + number=9, + ) + parameters: struct_pb2.Struct = proto.Field( + proto.MESSAGE, + number=10, + message=struct_pb2.Struct, + ) automated_agent_reply_type: AutomatedAgentReplyType = proto.Field( proto.ENUM, number=7, @@ -1708,6 +1765,10 @@ class AutomatedAgentReplyType(proto.Enum): proto.STRING, number=11, ) + call_companion_auth_code: bytes = proto.Field( + proto.BYTES, + number=12, + ) class ArticleAnswer(proto.Message): @@ -2213,6 +2274,231 @@ class AssistQueryParameters(proto.Message): ) +class ResponseMessage(proto.Message): + r"""Response messages from an automated 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: + text (google.cloud.dialogflow_v2.types.ResponseMessage.Text): + Returns a text response. + + This field is a member of `oneof`_ ``message``. + payload (google.protobuf.struct_pb2.Struct): + Returns a response containing a custom, + platform-specific payload. + + This field is a member of `oneof`_ ``message``. + live_agent_handoff (google.cloud.dialogflow_v2.types.ResponseMessage.LiveAgentHandoff): + Hands off conversation to a live agent. + + This field is a member of `oneof`_ ``message``. + end_interaction (google.cloud.dialogflow_v2.types.ResponseMessage.EndInteraction): + A signal that indicates the interaction with + the Dialogflow agent has ended. + + This field is a member of `oneof`_ ``message``. + mixed_audio (google.cloud.dialogflow_v2.types.ResponseMessage.MixedAudio): + An audio response message composed of both + the synthesized Dialogflow agent responses and + the audios hosted in places known to the client. + + This field is a member of `oneof`_ ``message``. + telephony_transfer_call (google.cloud.dialogflow_v2.types.ResponseMessage.TelephonyTransferCall): + A signal that the client should transfer the + phone call connected to this agent to a + third-party endpoint. + + This field is a member of `oneof`_ ``message``. + """ + + class Text(proto.Message): + r"""The text response message. + + Attributes: + text (MutableSequence[str]): + A collection of text response variants. If + multiple variants are defined, only one text + response variant is returned at runtime. + """ + + text: MutableSequence[str] = proto.RepeatedField( + proto.STRING, + number=1, + ) + + class LiveAgentHandoff(proto.Message): + r"""Indicates that the conversation should be handed off to a human + agent. + + Dialogflow only uses this to determine which conversations were + handed off to a human agent for measurement purposes. What else to + do with this signal is up to you and your handoff procedures. + + You may set this, for example: + + - In the entry fulfillment of a CX Page if entering the page + indicates something went extremely wrong in the conversation. + - In a webhook response when you determine that the customer issue + can only be handled by a human. + + Attributes: + metadata (google.protobuf.struct_pb2.Struct): + Custom metadata for your handoff procedure. + Dialogflow doesn't impose any structure on this. + """ + + metadata: struct_pb2.Struct = proto.Field( + proto.MESSAGE, + number=1, + message=struct_pb2.Struct, + ) + + class EndInteraction(proto.Message): + r"""Indicates that interaction with the Dialogflow agent has + ended. + + """ + + class MixedAudio(proto.Message): + r"""Represents an audio message that is composed of both segments + synthesized from the Dialogflow agent prompts and ones hosted + externally at the specified URIs. + + Attributes: + segments (MutableSequence[google.cloud.dialogflow_v2.types.ResponseMessage.MixedAudio.Segment]): + Segments this audio response is composed of. + """ + + class Segment(proto.Message): + r"""Represents one segment of audio. + + 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): + Raw audio synthesized from the Dialogflow + agent's response using the output config + specified in the request. + + This field is a member of `oneof`_ ``content``. + uri (str): + Client-specific URI that points to an audio + clip accessible to the client. + + This field is a member of `oneof`_ ``content``. + allow_playback_interruption (bool): + Whether the playback of this segment can be + interrupted by the end user's speech and the + client should then start the next Dialogflow + request. + """ + + audio: bytes = proto.Field( + proto.BYTES, + number=1, + oneof="content", + ) + uri: str = proto.Field( + proto.STRING, + number=2, + oneof="content", + ) + allow_playback_interruption: bool = proto.Field( + proto.BOOL, + number=3, + ) + + segments: MutableSequence["ResponseMessage.MixedAudio.Segment"] = ( + proto.RepeatedField( + proto.MESSAGE, + number=1, + message="ResponseMessage.MixedAudio.Segment", + ) + ) + + class TelephonyTransferCall(proto.Message): + r"""Represents the signal that telles the client to transfer the + phone call connected to the agent to a third-party endpoint. + + 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: + phone_number (str): + Transfer the call to a phone number in `E.164 + format `__. + + This field is a member of `oneof`_ ``endpoint``. + sip_uri (str): + Transfer the call to a SIP endpoint. + + This field is a member of `oneof`_ ``endpoint``. + """ + + phone_number: str = proto.Field( + proto.STRING, + number=1, + oneof="endpoint", + ) + sip_uri: str = proto.Field( + proto.STRING, + number=2, + oneof="endpoint", + ) + + text: Text = proto.Field( + proto.MESSAGE, + number=1, + oneof="message", + message=Text, + ) + payload: struct_pb2.Struct = proto.Field( + proto.MESSAGE, + number=2, + oneof="message", + message=struct_pb2.Struct, + ) + live_agent_handoff: LiveAgentHandoff = proto.Field( + proto.MESSAGE, + number=3, + oneof="message", + message=LiveAgentHandoff, + ) + end_interaction: EndInteraction = proto.Field( + proto.MESSAGE, + number=4, + oneof="message", + message=EndInteraction, + ) + mixed_audio: MixedAudio = proto.Field( + proto.MESSAGE, + number=5, + oneof="message", + message=MixedAudio, + ) + telephony_transfer_call: TelephonyTransferCall = proto.Field( + proto.MESSAGE, + number=6, + oneof="message", + message=TelephonyTransferCall, + ) + + class SuggestKnowledgeAssistRequest(proto.Message): r"""The request message for [Participants.SuggestKnowledgeAssist][google.cloud.dialogflow.v2.Participants.SuggestKnowledgeAssist]. @@ -3322,6 +3608,11 @@ class VoiceSessionConfig(proto.Message): inherited from the ConversationProfile. This field is a member of `oneof`_ ``_use_gemini_asr``. + disable_interim_input_transcripts (bool): + Optional. Disables emission of interim input transcriptions + when set to ``true``. + + This field is a member of `oneof`_ ``_disable_interim_input_transcripts``. """ input_audio_encoding: gcd_audio_config.AudioEncoding = proto.Field( @@ -3362,6 +3653,11 @@ class VoiceSessionConfig(proto.Message): number=25, optional=True, ) + disable_interim_input_transcripts: bool = proto.Field( + proto.BOOL, + number=26, + optional=True, + ) participant: str = proto.Field( proto.STRING, 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 a6c40710700f..1b13a772cb3c 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 @@ -1215,6 +1215,11 @@ class SentimentAnalysisResult(proto.Message): Attributes: query_text_sentiment (google.cloud.dialogflow_v2.types.Sentiment): The sentiment analysis result for ``query_text``. + status (google.rpc.status_pb2.Status): + Output only. The status of the sentiment analysis operation. + If the operation failed, this field will contain the error + details. For example, it might indicate a quota issue + (RESOURCE_EXHAUSTED). """ query_text_sentiment: "Sentiment" = proto.Field( @@ -1222,6 +1227,11 @@ class SentimentAnalysisResult(proto.Message): number=1, message="Sentiment", ) + status: status_pb2.Status = proto.Field( + proto.MESSAGE, + number=3, + message=status_pb2.Status, + ) class Sentiment(proto.Message): 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 98b22f5c46ea..27f7c85c8212 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 @@ -39,9 +39,11 @@ HAS_GOOGLE_AUTH_AIO = False import google.auth +import google.protobuf.any_pb2 as any_pb2 # type: ignore 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 from google.api_core import ( client_options, gapic_v1, @@ -3047,7 +3049,17 @@ def test_update_answer_record_rest_call_success(request_type): "query_text_sentiment": { "score": 0.54, "magnitude": 0.9580000000000001, - } + }, + "status": { + "code": 411, + "message": "message_value", + "details": [ + { + "type_url": "type.googleapis.com/google.protobuf.Duration", + "value": b"\x08\x0c\x10\xdb\x07", + } + ], + }, }, }, "intent_suggestion": { 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 800b297cb183..3ebdb50b4ddd 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 @@ -6125,13 +6125,13 @@ def test_create_conversation_profile_rest_call_success(request_type): "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, + "disable_interim_input_transcripts": True, }, "language_code": "language_code_value", "sip_config": { @@ -6492,13 +6492,13 @@ def test_update_conversation_profile_rest_call_success(request_type): "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, + "disable_interim_input_transcripts": True, }, "language_code": "language_code_value", "sip_config": { 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 0749071147ed..d3773609cd7a 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 @@ -39,9 +39,11 @@ HAS_GOOGLE_AUTH_AIO = False import google.auth +import google.protobuf.any_pb2 as any_pb2 # type: ignore import google.protobuf.duration_pb2 as duration_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 from google.api_core import ( client_options, gapic_v1, @@ -7856,13 +7858,13 @@ def test_create_conversation_rest_call_success(request_type): "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, + "disable_interim_input_transcripts": True, }, "language_code": "language_code_value", "sip_config": { diff --git a/packages/google-cloud-modelarmor/google/cloud/modelarmor/__init__.py b/packages/google-cloud-modelarmor/google/cloud/modelarmor/__init__.py index 0ab5cd9168c2..89f6679ee914 100644 --- a/packages/google-cloud-modelarmor/google/cloud/modelarmor/__init__.py +++ b/packages/google-cloud-modelarmor/google/cloud/modelarmor/__init__.py @@ -34,6 +34,9 @@ FilterExecutionState, FilterMatchState, FilterResult, + FilterVersionAlias, + FilterVersionConfig, + FilterVersionSelector, FloorSetting, GetFloorSettingRequest, GetTemplateRequest, @@ -42,6 +45,7 @@ ListTemplatesResponse, MaliciousUriFilterResult, MaliciousUriFilterSettings, + McpServerFloorSetting, MessageItem, Modality, MultiLanguageDetectionMetadata, @@ -86,6 +90,8 @@ "DeleteTemplateRequest", "FilterConfig", "FilterResult", + "FilterVersionConfig", + "FilterVersionSelector", "FloorSetting", "GetFloorSettingRequest", "GetTemplateRequest", @@ -93,6 +99,7 @@ "ListTemplatesResponse", "MaliciousUriFilterResult", "MaliciousUriFilterSettings", + "McpServerFloorSetting", "MessageItem", "MultiLanguageDetectionMetadata", "PiAndJailbreakFilterResult", @@ -123,6 +130,7 @@ "DetectionConfidenceLevel", "FilterExecutionState", "FilterMatchState", + "FilterVersionAlias", "InvocationResult", "Modality", "RaiFilterType", diff --git a/packages/google-cloud-modelarmor/google/cloud/modelarmor_v1/__init__.py b/packages/google-cloud-modelarmor/google/cloud/modelarmor_v1/__init__.py index 0713f9b48922..f1f168353e15 100644 --- a/packages/google-cloud-modelarmor/google/cloud/modelarmor_v1/__init__.py +++ b/packages/google-cloud-modelarmor/google/cloud/modelarmor_v1/__init__.py @@ -44,6 +44,9 @@ FilterExecutionState, FilterMatchState, FilterResult, + FilterVersionAlias, + FilterVersionConfig, + FilterVersionSelector, FloorSetting, GetFloorSettingRequest, GetTemplateRequest, @@ -52,6 +55,7 @@ ListTemplatesResponse, MaliciousUriFilterResult, MaliciousUriFilterSettings, + McpServerFloorSetting, MessageItem, Modality, MultiLanguageDetectionMetadata, @@ -98,6 +102,9 @@ "FilterExecutionState", "FilterMatchState", "FilterResult", + "FilterVersionAlias", + "FilterVersionConfig", + "FilterVersionSelector", "FloorSetting", "GetFloorSettingRequest", "GetTemplateRequest", @@ -106,6 +113,7 @@ "ListTemplatesResponse", "MaliciousUriFilterResult", "MaliciousUriFilterSettings", + "McpServerFloorSetting", "MessageItem", "Modality", "ModelArmorClient", diff --git a/packages/google-cloud-modelarmor/google/cloud/modelarmor_v1/types/__init__.py b/packages/google-cloud-modelarmor/google/cloud/modelarmor_v1/types/__init__.py index 8c78342a308c..470b41c62632 100644 --- a/packages/google-cloud-modelarmor/google/cloud/modelarmor_v1/types/__init__.py +++ b/packages/google-cloud-modelarmor/google/cloud/modelarmor_v1/types/__init__.py @@ -25,6 +25,9 @@ FilterExecutionState, FilterMatchState, FilterResult, + FilterVersionAlias, + FilterVersionConfig, + FilterVersionSelector, FloorSetting, GetFloorSettingRequest, GetTemplateRequest, @@ -33,6 +36,7 @@ ListTemplatesResponse, MaliciousUriFilterResult, MaliciousUriFilterSettings, + McpServerFloorSetting, MessageItem, Modality, MultiLanguageDetectionMetadata, @@ -75,6 +79,8 @@ "DeleteTemplateRequest", "FilterConfig", "FilterResult", + "FilterVersionConfig", + "FilterVersionSelector", "FloorSetting", "GetFloorSettingRequest", "GetTemplateRequest", @@ -82,6 +88,7 @@ "ListTemplatesResponse", "MaliciousUriFilterResult", "MaliciousUriFilterSettings", + "McpServerFloorSetting", "MessageItem", "MultiLanguageDetectionMetadata", "PiAndJailbreakFilterResult", @@ -112,6 +119,7 @@ "DetectionConfidenceLevel", "FilterExecutionState", "FilterMatchState", + "FilterVersionAlias", "InvocationResult", "Modality", "RaiFilterType", diff --git a/packages/google-cloud-modelarmor/google/cloud/modelarmor_v1/types/service.py b/packages/google-cloud-modelarmor/google/cloud/modelarmor_v1/types/service.py index a3da8c3975bb..ee1486b565c8 100644 --- a/packages/google-cloud-modelarmor/google/cloud/modelarmor_v1/types/service.py +++ b/packages/google-cloud-modelarmor/google/cloud/modelarmor_v1/types/service.py @@ -19,6 +19,7 @@ import google.protobuf.field_mask_pb2 as field_mask_pb2 # type: ignore import google.protobuf.timestamp_pb2 as timestamp_pb2 # type: ignore +import google.type.date_pb2 as date_pb2 # type: ignore import proto # type: ignore __protobuf__ = proto.module( @@ -32,8 +33,11 @@ "InvocationResult", "StreamingMode", "Modality", + "FilterVersionAlias", + "FilterVersionSelector", "Template", "FloorSetting", + "McpServerFloorSetting", "AiPlatformFloorSetting", "ListTemplatesRequest", "ListTemplatesResponse", @@ -54,6 +58,7 @@ "SanitizeModelResponseRequest", "SanitizeUserPromptResponse", "SanitizeModelResponseResponse", + "FilterVersionConfig", "SanitizationResult", "MultiLanguageDetectionMetadata", "FilterResult", @@ -252,6 +257,88 @@ class Modality(proto.Enum): MODALITY_IMAGE = 2 +class FilterVersionAlias(proto.Enum): + r"""Enum for Filter Version Aliases. + These aliases provide a way to always point to a specific track + without needing to update the version in templates. + + Values: + FILTER_VERSION_ALIAS_UNSPECIFIED (0): + The default value. If used, it will resolve to the + ``STABLE`` alias. + FILTER_VERSION_ALIAS_STABLE (1): + The ``STABLE`` alias points to the most recent stable model + version. Using this alias means no code changes are required + when a new model becomes the stable version. + FILTER_VERSION_ALIAS_LATEST (2): + The ``LATEST`` alias points to the newest model version + available. This version is subject to frequent revisions and + offers SLO guarantees but does not assure stability, + providing the most current security protections. + FILTER_VERSION_ALIAS_LEGACY (3): + The ``LEGACY`` alias could be used for sanitization + operations for a transition period. New templates cannot be + created with this version. + FILTER_VERSION_ALIAS_RETIRED (4): + The ``RETIRED`` alias could be used for versions that are no + longer available to be used. While new templates cannot be + created with this alias, any existing template or request + using ``RETIRED`` version will fall back to the current + ``STABLE`` version for sanitization operations. + """ + + FILTER_VERSION_ALIAS_UNSPECIFIED = 0 + FILTER_VERSION_ALIAS_STABLE = 1 + FILTER_VERSION_ALIAS_LATEST = 2 + FILTER_VERSION_ALIAS_LEGACY = 3 + FILTER_VERSION_ALIAS_RETIRED = 4 + + +class FilterVersionSelector(proto.Message): + r"""Represents the configuration for selecting a Filter Version. + Allows customers to choose to use either a specific version or a + predefined alias. + + 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: + version (str): + Allows customers to pin to a specific, immutable Filter + Version. This provides stability, as this will not change + after a version upgrade. Expected format is a case-sensitive + string, e.g., "v1", "v2". Requests providing an invalid or + non-existent version string will be rejected with an + ``INVALID_ARGUMENT`` error. + + This field is a member of `oneof`_ ``version_spec``. + alias (google.cloud.modelarmor_v1.types.FilterVersionAlias): + Allows customers to use a predefined alias + that dynamically points to a specific version + based on internal upgrades. This offers + flexibility and reduces the need for template + updates. + + This field is a member of `oneof`_ ``version_spec``. + """ + + version: str = proto.Field( + proto.STRING, + number=1, + oneof="version_spec", + ) + alias: "FilterVersionAlias" = proto.Field( + proto.ENUM, + number=2, + oneof="version_spec", + enum="FilterVersionAlias", + ) + + class Template(proto.Message): r"""Message describing Template resource @@ -274,6 +361,8 @@ class Template(proto.Message): class TemplateMetadata(proto.Message): r"""Message describing TemplateMetadata + .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields + Attributes: ignore_partial_invocation_failures (bool): Optional. If true, partial detector failures @@ -306,9 +395,26 @@ class TemplateMetadata(proto.Message): multi_language_detection (google.cloud.modelarmor_v1.types.Template.TemplateMetadata.MultiLanguageDetection): Optional. Metadata for multi language detection. + filter_version_selector (google.cloud.modelarmor_v1.types.FilterVersionSelector): + Optional. Specifies the configuration for the Filter version + to be used. If this field is populated, it takes precedence + over any values set in the deprecated ``filter_version`` + fields within ``RaiFilterSettings``, + ``PiAndJailbreakFilterSettings``. + + This field is a member of `oneof`_ ``_filter_version_selector``. modalities (MutableSequence[google.cloud.modelarmor_v1.types.Modality]): Optional. Specifies the modalities to scan. If empty, only text modality will be scanned. + data_residency_compliant (bool): + Optional. Indicates whether the template is + subject to data residency compliance. If true + (default for new templates), the template is + subject to data residency compliance. If false, + the template bypasses data residency compliance + checks. + + This field is a member of `oneof`_ ``_data_residency_compliant``. """ class EnforcementType(proto.Enum): @@ -384,11 +490,22 @@ class MultiLanguageDetection(proto.Message): message="Template.TemplateMetadata.MultiLanguageDetection", ) ) + filter_version_selector: "FilterVersionSelector" = proto.Field( + proto.MESSAGE, + number=10, + optional=True, + message="FilterVersionSelector", + ) modalities: MutableSequence["Modality"] = proto.RepeatedField( proto.ENUM, number=11, enum="Modality", ) + data_residency_compliant: bool = proto.Field( + proto.BOOL, + number=12, + optional=True, + ) name: str = proto.Field( proto.STRING, @@ -448,6 +565,10 @@ class FloorSetting(proto.Message): This field is a member of `oneof`_ ``_ai_platform_floor_setting``. floor_setting_metadata (google.cloud.modelarmor_v1.types.FloorSetting.FloorSettingMetadata): Optional. Metadata for FloorSetting + google_mcp_server_floor_setting (google.cloud.modelarmor_v1.types.McpServerFloorSetting): + Optional. Google MCP Server floor setting. + + This field is a member of `oneof`_ ``_google_mcp_server_floor_setting``. """ class IntegratedService(proto.Enum): @@ -458,10 +579,14 @@ class IntegratedService(proto.Enum): Unspecified integrated service. AI_PLATFORM (1): AI Platform. + GOOGLE_MCP_SERVER (2): + Google MCP Server (via Shim Service + Extension) """ INTEGRATED_SERVICE_UNSPECIFIED = 0 AI_PLATFORM = 1 + GOOGLE_MCP_SERVER = 2 class FloorSettingMetadata(proto.Message): r"""message describing FloorSetting Metadata @@ -533,6 +658,56 @@ class MultiLanguageDetection(proto.Message): number=8, message=FloorSettingMetadata, ) + google_mcp_server_floor_setting: "McpServerFloorSetting" = proto.Field( + proto.MESSAGE, + number=9, + optional=True, + message="McpServerFloorSetting", + ) + + +class McpServerFloorSetting(proto.Message): + r"""Message describing MCP Server Floor Setting. + + 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: + inspect_only (bool): + Optional. If true, Model Armor filters will + be run in inspect only mode. No action will be + taken on the request. + + This field is a member of `oneof`_ ``enforcement_type``. + inspect_and_block (bool): + Optional. If true, Model Armor filters will + be run in inspect and block mode. Requests that + trip Model Armor filters will be blocked. + + This field is a member of `oneof`_ ``enforcement_type``. + enable_cloud_logging (bool): + Optional. If true, log Model Armor filter + results to Cloud Logging. + """ + + inspect_only: bool = proto.Field( + proto.BOOL, + number=1, + oneof="enforcement_type", + ) + inspect_and_block: bool = proto.Field( + proto.BOOL, + number=2, + oneof="enforcement_type", + ) + enable_cloud_logging: bool = proto.Field( + proto.BOOL, + number=3, + ) class AiPlatformFloorSetting(proto.Message): @@ -1251,6 +1426,66 @@ class SanitizeModelResponseResponse(proto.Message): ) +class FilterVersionConfig(proto.Message): + r"""Message describing a Filter Version Configuration. + + .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields + + Attributes: + filter_version (str): + Output only. The identifier for this specific + version. + filter_version_alias (google.cloud.modelarmor_v1.types.FilterVersionAlias): + Output only. The alias associated with this + version, if any (e.g., "STABLE", "LATEST"). This + will be populated if this version is currently + mapped to an alias. + + This field is a member of `oneof`_ ``_filter_version_alias``. + release_date (google.type.date_pb2.Date): + Output only. The date when this version was + released. + + This field is a member of `oneof`_ ``_release_date``. + projected_deprecation_date (google.type.date_pb2.Date): + Output only. The estimated date when this + version is projected to be deprecated. + + This field is a member of `oneof`_ ``_projected_deprecation_date``. + message_items (MutableSequence[google.cloud.modelarmor_v1.types.MessageItem]): + Output only. Extra information regarding this + filter version + """ + + filter_version: str = proto.Field( + proto.STRING, + number=1, + ) + filter_version_alias: "FilterVersionAlias" = proto.Field( + proto.ENUM, + number=2, + optional=True, + enum="FilterVersionAlias", + ) + release_date: date_pb2.Date = proto.Field( + proto.MESSAGE, + number=3, + optional=True, + message=date_pb2.Date, + ) + projected_deprecation_date: date_pb2.Date = proto.Field( + proto.MESSAGE, + number=4, + optional=True, + message=date_pb2.Date, + ) + message_items: MutableSequence["MessageItem"] = proto.RepeatedField( + proto.MESSAGE, + number=5, + message="MessageItem", + ) + + class SanitizationResult(proto.Message): r"""Sanitization result after applying all the filters on input content. @@ -1270,7 +1505,7 @@ class SanitizationResult(proto.Message): filter_results (MutableMapping[str, google.cloud.modelarmor_v1.types.FilterResult]): Output only. Results for all filters where the key is the filter name - either of "csam", "malicious_uris", "rai", - "pi_and_jailbreak" ,"sdp". + "pi_and_jailbreak", "sdp". invocation_result (google.cloud.modelarmor_v1.types.InvocationResult): Output only. A field indicating the outcome of the invocation, irrespective of match status. @@ -1299,6 +1534,10 @@ class SanitizationMetadata(proto.Message): stream_chunk_processed (google.cloud.modelarmor_v1.types.DataItem): Output only. The stream chunk processed by the Sanitization service. + filter_version_config (google.cloud.modelarmor_v1.types.FilterVersionConfig): + Output only. Provides details about the + Filter Version configuration used to sanitize + this request. """ error_code: int = proto.Field( @@ -1318,6 +1557,11 @@ class SanitizationMetadata(proto.Message): number=4, message="DataItem", ) + filter_version_config: "FilterVersionConfig" = proto.Field( + proto.MESSAGE, + number=6, + message="FilterVersionConfig", + ) filter_match_state: "FilterMatchState" = proto.Field( proto.ENUM, @@ -1347,11 +1591,20 @@ class MultiLanguageDetectionMetadata(proto.Message): Attributes: source_language (str): - Optional. Optional Source language of the - user prompt. - If multi-language detection is enabled but - language is not set in that case we would - automatically detect the source language. + Optional. Optional Source language of the user prompt. + + If multi-language detection is enabled and this field is not + set, the source language will be automatically detected. + When a source language is provided, Model Armor uses it to + sanitize the input. In that case the system does not perform + auto-detection and relies solely on the specified language. + + This string field accepts a language code from the ISO-639 + standard. For a list of languages supported by Model Armor, + see [Model Armor supported languages] + (https://cloud.google.com/security-command-center/docs/model-armor-overview#languages-supported). + For a comprehensive list of language codes, see + `ISO-639 `__. enable_multi_language_detection (bool): Optional. Enable detection of multi-language prompts and responses. @@ -1674,6 +1927,9 @@ class ByteDataItem(proto.Message): Required. The type of byte data byte_data (bytes): Required. Bytes Data + file_label (str): + Optional. Label of the file. This is used to + identify the file in the response. """ class ByteItemType(proto.Enum): @@ -1719,6 +1975,10 @@ class ByteItemType(proto.Enum): proto.BYTES, number=2, ) + file_label: str = proto.Field( + proto.STRING, + number=3, + ) class SdpDeidentifyResult(proto.Message): diff --git a/packages/google-cloud-modelarmor/tests/unit/gapic/modelarmor_v1/test_model_armor.py b/packages/google-cloud-modelarmor/tests/unit/gapic/modelarmor_v1/test_model_armor.py index 2f0a12ba5839..ee634cb1458e 100644 --- a/packages/google-cloud-modelarmor/tests/unit/gapic/modelarmor_v1/test_model_armor.py +++ b/packages/google-cloud-modelarmor/tests/unit/gapic/modelarmor_v1/test_model_armor.py @@ -6875,7 +6875,9 @@ def test_create_template_rest_call_success(request_type): "log_sanitize_operations": True, "enforcement_type": 1, "multi_language_detection": {"enable_multi_language_detection": True}, + "filter_version_selector": {"version": "version_value", "alias": 1}, "modalities": [1], + "data_residency_compliant": True, }, } # The version of a generated dependency at test runtime may differ from the version used during generation. @@ -7107,7 +7109,9 @@ def test_update_template_rest_call_success(request_type): "log_sanitize_operations": True, "enforcement_type": 1, "multi_language_detection": {"enable_multi_language_detection": True}, + "filter_version_selector": {"version": "version_value", "alias": 1}, "modalities": [1], + "data_residency_compliant": True, }, } # The version of a generated dependency at test runtime may differ from the version used during generation. @@ -7580,6 +7584,11 @@ def test_update_floor_setting_rest_call_success(request_type): "floor_setting_metadata": { "multi_language_detection": {"enable_multi_language_detection": True} }, + "google_mcp_server_floor_setting": { + "inspect_only": True, + "inspect_and_block": True, + "enable_cloud_logging": 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 diff --git a/packages/google-cloud-redis-cluster/google/cloud/redis_cluster_v1beta1/__init__.py b/packages/google-cloud-redis-cluster/google/cloud/redis_cluster_v1beta1/__init__.py index df01f07f63ab..43bbedaa1a79 100644 --- a/packages/google-cloud-redis-cluster/google/cloud/redis_cluster_v1beta1/__init__.py +++ b/packages/google-cloud-redis-cluster/google/cloud/redis_cluster_v1beta1/__init__.py @@ -41,7 +41,10 @@ AclPolicyRevision, AclPolicyRevisionStatus, AclRule, + AddAuthTokenRequest, + AddTokenAuthUserRequest, AuthorizationMode, + AuthToken, AutomatedBackupConfig, Backup, BackupClusterRequest, @@ -61,28 +64,36 @@ CreateClusterRequest, CrossClusterReplicationConfig, DeleteAclPolicyRequest, + DeleteAuthTokenRequest, DeleteBackupRequest, DeleteClusterRequest, + DeleteTokenAuthUserRequest, DiscoveryEndpoint, EncryptionInfo, ExportBackupRequest, GetAclPolicyRequest, GetAclPolicyRevisionRequest, + GetAuthTokenRequest, GetBackupCollectionRequest, GetBackupRequest, GetClusterCertificateAuthorityRequest, GetClusterRequest, GetSharedRegionalCertificateAuthorityRequest, + GetTokenAuthUserRequest, ListAclPoliciesRequest, ListAclPoliciesResponse, ListAclPolicyRevisionsRequest, ListAclPolicyRevisionsResponse, + ListAuthTokensRequest, + ListAuthTokensResponse, ListBackupCollectionsRequest, ListBackupCollectionsResponse, ListBackupsRequest, ListBackupsResponse, ListClustersRequest, ListClustersResponse, + ListTokenAuthUsersRequest, + ListTokenAuthUsersResponse, NodeType, OperationMetadata, PscAutoConnection, @@ -93,6 +104,7 @@ RescheduleClusterMaintenanceRequest, ServerCaMode, SharedRegionalCertificateAuthority, + TokenAuthUser, TransitEncryptionMode, UpdateAclPolicyRequest, UpdateClusterRequest, @@ -106,6 +118,9 @@ "AclPolicyRevision", "AclPolicyRevisionStatus", "AclRule", + "AddAuthTokenRequest", + "AddTokenAuthUserRequest", + "AuthToken", "AuthorizationMode", "AutomatedBackupConfig", "Backup", @@ -127,28 +142,36 @@ "CreateClusterRequest", "CrossClusterReplicationConfig", "DeleteAclPolicyRequest", + "DeleteAuthTokenRequest", "DeleteBackupRequest", "DeleteClusterRequest", + "DeleteTokenAuthUserRequest", "DiscoveryEndpoint", "EncryptionInfo", "ExportBackupRequest", "GetAclPolicyRequest", "GetAclPolicyRevisionRequest", + "GetAuthTokenRequest", "GetBackupCollectionRequest", "GetBackupRequest", "GetClusterCertificateAuthorityRequest", "GetClusterRequest", "GetSharedRegionalCertificateAuthorityRequest", + "GetTokenAuthUserRequest", "ListAclPoliciesRequest", "ListAclPoliciesResponse", "ListAclPolicyRevisionsRequest", "ListAclPolicyRevisionsResponse", + "ListAuthTokensRequest", + "ListAuthTokensResponse", "ListBackupCollectionsRequest", "ListBackupCollectionsResponse", "ListBackupsRequest", "ListBackupsResponse", "ListClustersRequest", "ListClustersResponse", + "ListTokenAuthUsersRequest", + "ListTokenAuthUsersResponse", "NodeType", "OperationMetadata", "PscAutoConnection", @@ -159,6 +182,7 @@ "RescheduleClusterMaintenanceRequest", "ServerCaMode", "SharedRegionalCertificateAuthority", + "TokenAuthUser", "TransitEncryptionMode", "UpdateAclPolicyRequest", "UpdateClusterRequest", diff --git a/packages/google-cloud-redis-cluster/google/cloud/redis_cluster_v1beta1/gapic_metadata.json b/packages/google-cloud-redis-cluster/google/cloud/redis_cluster_v1beta1/gapic_metadata.json index 61885b4f2199..f5574a86fb69 100644 --- a/packages/google-cloud-redis-cluster/google/cloud/redis_cluster_v1beta1/gapic_metadata.json +++ b/packages/google-cloud-redis-cluster/google/cloud/redis_cluster_v1beta1/gapic_metadata.json @@ -10,6 +10,16 @@ "grpc": { "libraryClient": "CloudRedisClusterClient", "rpcs": { + "AddAuthToken": { + "methods": [ + "add_auth_token" + ] + }, + "AddTokenAuthUser": { + "methods": [ + "add_token_auth_user" + ] + }, "BackupCluster": { "methods": [ "backup_cluster" @@ -30,6 +40,11 @@ "delete_acl_policy" ] }, + "DeleteAuthToken": { + "methods": [ + "delete_auth_token" + ] + }, "DeleteBackup": { "methods": [ "delete_backup" @@ -40,6 +55,11 @@ "delete_cluster" ] }, + "DeleteTokenAuthUser": { + "methods": [ + "delete_token_auth_user" + ] + }, "ExportBackup": { "methods": [ "export_backup" @@ -55,6 +75,11 @@ "get_acl_policy_revision" ] }, + "GetAuthToken": { + "methods": [ + "get_auth_token" + ] + }, "GetBackup": { "methods": [ "get_backup" @@ -80,6 +105,11 @@ "get_shared_regional_certificate_authority" ] }, + "GetTokenAuthUser": { + "methods": [ + "get_token_auth_user" + ] + }, "ListAclPolicies": { "methods": [ "list_acl_policies" @@ -90,6 +120,11 @@ "list_acl_policy_revisions" ] }, + "ListAuthTokens": { + "methods": [ + "list_auth_tokens" + ] + }, "ListBackupCollections": { "methods": [ "list_backup_collections" @@ -105,6 +140,11 @@ "list_clusters" ] }, + "ListTokenAuthUsers": { + "methods": [ + "list_token_auth_users" + ] + }, "RescheduleClusterMaintenance": { "methods": [ "reschedule_cluster_maintenance" @@ -125,6 +165,16 @@ "grpc-async": { "libraryClient": "CloudRedisClusterAsyncClient", "rpcs": { + "AddAuthToken": { + "methods": [ + "add_auth_token" + ] + }, + "AddTokenAuthUser": { + "methods": [ + "add_token_auth_user" + ] + }, "BackupCluster": { "methods": [ "backup_cluster" @@ -145,6 +195,11 @@ "delete_acl_policy" ] }, + "DeleteAuthToken": { + "methods": [ + "delete_auth_token" + ] + }, "DeleteBackup": { "methods": [ "delete_backup" @@ -155,6 +210,11 @@ "delete_cluster" ] }, + "DeleteTokenAuthUser": { + "methods": [ + "delete_token_auth_user" + ] + }, "ExportBackup": { "methods": [ "export_backup" @@ -170,6 +230,11 @@ "get_acl_policy_revision" ] }, + "GetAuthToken": { + "methods": [ + "get_auth_token" + ] + }, "GetBackup": { "methods": [ "get_backup" @@ -195,6 +260,11 @@ "get_shared_regional_certificate_authority" ] }, + "GetTokenAuthUser": { + "methods": [ + "get_token_auth_user" + ] + }, "ListAclPolicies": { "methods": [ "list_acl_policies" @@ -205,6 +275,11 @@ "list_acl_policy_revisions" ] }, + "ListAuthTokens": { + "methods": [ + "list_auth_tokens" + ] + }, "ListBackupCollections": { "methods": [ "list_backup_collections" @@ -220,6 +295,11 @@ "list_clusters" ] }, + "ListTokenAuthUsers": { + "methods": [ + "list_token_auth_users" + ] + }, "RescheduleClusterMaintenance": { "methods": [ "reschedule_cluster_maintenance" @@ -240,6 +320,16 @@ "rest": { "libraryClient": "CloudRedisClusterClient", "rpcs": { + "AddAuthToken": { + "methods": [ + "add_auth_token" + ] + }, + "AddTokenAuthUser": { + "methods": [ + "add_token_auth_user" + ] + }, "BackupCluster": { "methods": [ "backup_cluster" @@ -260,6 +350,11 @@ "delete_acl_policy" ] }, + "DeleteAuthToken": { + "methods": [ + "delete_auth_token" + ] + }, "DeleteBackup": { "methods": [ "delete_backup" @@ -270,6 +365,11 @@ "delete_cluster" ] }, + "DeleteTokenAuthUser": { + "methods": [ + "delete_token_auth_user" + ] + }, "ExportBackup": { "methods": [ "export_backup" @@ -285,6 +385,11 @@ "get_acl_policy_revision" ] }, + "GetAuthToken": { + "methods": [ + "get_auth_token" + ] + }, "GetBackup": { "methods": [ "get_backup" @@ -310,6 +415,11 @@ "get_shared_regional_certificate_authority" ] }, + "GetTokenAuthUser": { + "methods": [ + "get_token_auth_user" + ] + }, "ListAclPolicies": { "methods": [ "list_acl_policies" @@ -320,6 +430,11 @@ "list_acl_policy_revisions" ] }, + "ListAuthTokens": { + "methods": [ + "list_auth_tokens" + ] + }, "ListBackupCollections": { "methods": [ "list_backup_collections" @@ -335,6 +450,11 @@ "list_clusters" ] }, + "ListTokenAuthUsers": { + "methods": [ + "list_token_auth_users" + ] + }, "RescheduleClusterMaintenance": { "methods": [ "reschedule_cluster_maintenance" diff --git a/packages/google-cloud-redis-cluster/google/cloud/redis_cluster_v1beta1/services/cloud_redis_cluster/async_client.py b/packages/google-cloud-redis-cluster/google/cloud/redis_cluster_v1beta1/services/cloud_redis_cluster/async_client.py index 393e430d2b05..b96c86c18a5b 100644 --- a/packages/google-cloud-redis-cluster/google/cloud/redis_cluster_v1beta1/services/cloud_redis_cluster/async_client.py +++ b/packages/google-cloud-redis-cluster/google/cloud/redis_cluster_v1beta1/services/cloud_redis_cluster/async_client.py @@ -110,6 +110,8 @@ class CloudRedisClusterAsyncClient: parse_acl_policy_revision_path = staticmethod( CloudRedisClusterClient.parse_acl_policy_revision_path ) + auth_token_path = staticmethod(CloudRedisClusterClient.auth_token_path) + parse_auth_token_path = staticmethod(CloudRedisClusterClient.parse_auth_token_path) backup_path = staticmethod(CloudRedisClusterClient.backup_path) parse_backup_path = staticmethod(CloudRedisClusterClient.parse_backup_path) backup_collection_path = staticmethod( @@ -154,6 +156,10 @@ class CloudRedisClusterAsyncClient: parse_shared_regional_certificate_authority_path = staticmethod( CloudRedisClusterClient.parse_shared_regional_certificate_authority_path ) + token_auth_user_path = staticmethod(CloudRedisClusterClient.token_auth_user_path) + parse_token_auth_user_path = staticmethod( + CloudRedisClusterClient.parse_token_auth_user_path + ) common_billing_account_path = staticmethod( CloudRedisClusterClient.common_billing_account_path ) @@ -3245,6 +3251,1038 @@ async def sample_backup_cluster(): # Done; return the response. return response + async def list_token_auth_users( + self, + request: Optional[ + Union[cloud_redis_cluster.ListTokenAuthUsersRequest, 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.ListTokenAuthUsersAsyncPager: + r"""Lists all the token auth users for a token based auth + enabled cluster. + + .. 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 redis_cluster_v1beta1 + + async def sample_list_token_auth_users(): + # Create a client + client = redis_cluster_v1beta1.CloudRedisClusterAsyncClient() + + # Initialize request argument(s) + request = redis_cluster_v1beta1.ListTokenAuthUsersRequest( + parent="parent_value", + ) + + # Make the request + page_result = client.list_token_auth_users(request=request) + + # Handle the response + async for response in page_result: + print(response) + + Args: + request (Optional[Union[google.cloud.redis_cluster_v1beta1.types.ListTokenAuthUsersRequest, dict]]): + The request object. Request message for [ListTokenAuthUsers][]. + parent (:class:`str`): + Required. The parent resource that + this token based auth user will be + listed for. Format: + + projects/{project}/locations/{location}/clusters/{cluster} + + 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.redis_cluster_v1beta1.services.cloud_redis_cluster.pagers.ListTokenAuthUsersAsyncPager: + Response message for [ListTokenAuthUsers][]. + + 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, cloud_redis_cluster.ListTokenAuthUsersRequest): + request = cloud_redis_cluster.ListTokenAuthUsersRequest(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_token_auth_users + ] + + # 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.ListTokenAuthUsersAsyncPager( + method=rpc, + request=request, + response=response, + retry=retry, + timeout=timeout, + metadata=metadata, + ) + + # Done; return the response. + return response + + async def get_token_auth_user( + self, + request: Optional[ + Union[cloud_redis_cluster.GetTokenAuthUserRequest, 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]]] = (), + ) -> cloud_redis_cluster.TokenAuthUser: + r"""Gets a specific token auth user for a basic auth + enabled cluster. + + .. 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 redis_cluster_v1beta1 + + async def sample_get_token_auth_user(): + # Create a client + client = redis_cluster_v1beta1.CloudRedisClusterAsyncClient() + + # Initialize request argument(s) + request = redis_cluster_v1beta1.GetTokenAuthUserRequest( + name="name_value", + ) + + # Make the request + response = await client.get_token_auth_user(request=request) + + # Handle the response + print(response) + + Args: + request (Optional[Union[google.cloud.redis_cluster_v1beta1.types.GetTokenAuthUserRequest, dict]]): + The request object. Request message for [GetTokenAuthUser][]. + name (:class:`str`): + Required. The name of token auth user for a token based + auth enabled cluster. Format: + projects/{project}/locations/{location}/clusters/{cluster}/tokenAuthUsers/{token_auth_user} + + 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.redis_cluster_v1beta1.types.TokenAuthUser: + Represents a token based auth user + for the cluster. + + """ + # 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, cloud_redis_cluster.GetTokenAuthUserRequest): + request = cloud_redis_cluster.GetTokenAuthUserRequest(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_token_auth_user + ] + + # 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 list_auth_tokens( + self, + request: Optional[ + Union[cloud_redis_cluster.ListAuthTokensRequest, 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.ListAuthTokensAsyncPager: + r"""Lists all the auth tokens for a specific token auth + user. + + .. 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 redis_cluster_v1beta1 + + async def sample_list_auth_tokens(): + # Create a client + client = redis_cluster_v1beta1.CloudRedisClusterAsyncClient() + + # Initialize request argument(s) + request = redis_cluster_v1beta1.ListAuthTokensRequest( + parent="parent_value", + ) + + # Make the request + page_result = client.list_auth_tokens(request=request) + + # Handle the response + async for response in page_result: + print(response) + + Args: + request (Optional[Union[google.cloud.redis_cluster_v1beta1.types.ListAuthTokensRequest, dict]]): + The request object. Request message for [ListAuthTokens][]. + parent (:class:`str`): + Required. The parent resource that this auth token will + be listed for. Format: + projects/{project}/locations/{location}/clusters/{cluster}/tokenAuthUsers/{token_auth_user} + + 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.redis_cluster_v1beta1.services.cloud_redis_cluster.pagers.ListAuthTokensAsyncPager: + Response message for [ListAuthTokens][]. + + 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, cloud_redis_cluster.ListAuthTokensRequest): + request = cloud_redis_cluster.ListAuthTokensRequest(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_auth_tokens + ] + + # 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.ListAuthTokensAsyncPager( + method=rpc, + request=request, + response=response, + retry=retry, + timeout=timeout, + metadata=metadata, + ) + + # Done; return the response. + return response + + async def get_auth_token( + self, + request: Optional[Union[cloud_redis_cluster.GetAuthTokenRequest, 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]]] = (), + ) -> cloud_redis_cluster.AuthToken: + r"""Gets a specific auth token for a specific token auth + user. + + .. 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 redis_cluster_v1beta1 + + async def sample_get_auth_token(): + # Create a client + client = redis_cluster_v1beta1.CloudRedisClusterAsyncClient() + + # Initialize request argument(s) + request = redis_cluster_v1beta1.GetAuthTokenRequest( + name="name_value", + ) + + # Make the request + response = await client.get_auth_token(request=request) + + # Handle the response + print(response) + + Args: + request (Optional[Union[google.cloud.redis_cluster_v1beta1.types.GetAuthTokenRequest, dict]]): + The request object. Request message for [GetAuthToken][]. + name (:class:`str`): + Required. The name of auth token for a token based auth + enabled cluster. Format: + projects/{project}/locations/{location}/clusters/{cluster}/tokenAuthUsers/{token_auth_user}/authTokens/{auth_token} + + 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.redis_cluster_v1beta1.types.AuthToken: + Auth token for the cluster. + """ + # 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, cloud_redis_cluster.GetAuthTokenRequest): + request = cloud_redis_cluster.GetAuthTokenRequest(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_auth_token + ] + + # 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 add_token_auth_user( + self, + request: Optional[ + Union[cloud_redis_cluster.AddTokenAuthUserRequest, dict] + ] = None, + *, + cluster: Optional[str] = None, + token_auth_user: Optional[str] = None, + retry: OptionalRetry = gapic_v1.method.DEFAULT, + timeout: Union[float, object] = gapic_v1.method.DEFAULT, + metadata: Sequence[Tuple[str, Union[str, bytes]]] = (), + ) -> operation_async.AsyncOperation: + r"""Adds a token auth user for a token based auth enabled + cluster. + + .. 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 redis_cluster_v1beta1 + + async def sample_add_token_auth_user(): + # Create a client + client = redis_cluster_v1beta1.CloudRedisClusterAsyncClient() + + # Initialize request argument(s) + request = redis_cluster_v1beta1.AddTokenAuthUserRequest( + cluster="cluster_value", + token_auth_user="token_auth_user_value", + ) + + # Make the request + operation = await client.add_token_auth_user(request=request) + + print("Waiting for operation to complete...") + + response = await operation.result() + + # Handle the response + print(response) + + Args: + request (Optional[Union[google.cloud.redis_cluster_v1beta1.types.AddTokenAuthUserRequest, dict]]): + The request object. Request message for [AddTokenAuthUser][]. + cluster (:class:`str`): + Required. The cluster resource that + this token auth user will be added for. + Format: + projects/{project}/locations/{location}/clusters/{cluster} + + This corresponds to the ``cluster`` field + on the ``request`` instance; if ``request`` is provided, this + should not be set. + token_auth_user (:class:`str`): + Required. The id of the token auth + user to add. + + This corresponds to the ``token_auth_user`` 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.api_core.operation_async.AsyncOperation: + An object representing a long-running operation. + + The result type for the operation will be + :class:`google.cloud.redis_cluster_v1beta1.types.Cluster` + A cluster 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 = [cluster, token_auth_user] + 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, cloud_redis_cluster.AddTokenAuthUserRequest): + request = cloud_redis_cluster.AddTokenAuthUserRequest(request) + + # If we have keyword arguments corresponding to fields on the + # request, apply these. + if cluster is not None: + request.cluster = cluster + if token_auth_user is not None: + request.token_auth_user = token_auth_user + + # Wrap the RPC method; this adds retry and timeout information, + # and friendly error handling. + rpc = self._client._transport._wrapped_methods[ + self._client._transport.add_token_auth_user + ] + + # Certain fields should be provided within the metadata header; + # add these here. + metadata = tuple(metadata) + ( + gapic_v1.routing_header.to_grpc_metadata((("cluster", request.cluster),)), + ) + + # Validate the universe domain. + self._client._validate_universe_domain() + + # Send the request. + response = await rpc( + request, + retry=retry, + timeout=timeout, + metadata=metadata, + ) + + # Wrap the response in an operation future. + response = operation_async.from_gapic( + response, + self._client._transport.operations_client, + cloud_redis_cluster.Cluster, + metadata_type=cloud_redis_cluster.OperationMetadata, + ) + + # Done; return the response. + return response + + async def delete_token_auth_user( + self, + request: Optional[ + Union[cloud_redis_cluster.DeleteTokenAuthUserRequest, 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]]] = (), + ) -> operation_async.AsyncOperation: + r"""Deletes a token auth user for a token based auth + enabled cluster. + + .. 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 redis_cluster_v1beta1 + + async def sample_delete_token_auth_user(): + # Create a client + client = redis_cluster_v1beta1.CloudRedisClusterAsyncClient() + + # Initialize request argument(s) + request = redis_cluster_v1beta1.DeleteTokenAuthUserRequest( + name="name_value", + ) + + # Make the request + operation = await client.delete_token_auth_user(request=request) + + print("Waiting for operation to complete...") + + response = await operation.result() + + # Handle the response + print(response) + + Args: + request (Optional[Union[google.cloud.redis_cluster_v1beta1.types.DeleteTokenAuthUserRequest, dict]]): + The request object. Request message for [DeleteTokenAuthUser][]. + name (:class:`str`): + Required. The name of the token auth user to delete. + Format: + projects/{project}/locations/{location}/clusters/{cluster}/tokenAuthUsers/{token_auth_user} + + 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.api_core.operation_async.AsyncOperation: + An object representing a long-running operation. + + The result type for the operation will be :class:`google.protobuf.empty_pb2.Empty` A generic empty message that you can re-use to avoid defining duplicated + empty messages in your APIs. A typical example is to + use it as the request or the response type of an API + method. For instance: + + service Foo { + rpc Bar(google.protobuf.Empty) returns + (google.protobuf.Empty); + + } + + """ + # 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, cloud_redis_cluster.DeleteTokenAuthUserRequest): + request = cloud_redis_cluster.DeleteTokenAuthUserRequest(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_token_auth_user + ] + + # 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, + ) + + # Wrap the response in an operation future. + response = operation_async.from_gapic( + response, + self._client._transport.operations_client, + empty_pb2.Empty, + metadata_type=cloud_redis_cluster.OperationMetadata, + ) + + # Done; return the response. + return response + + async def add_auth_token( + self, + request: Optional[Union[cloud_redis_cluster.AddAuthTokenRequest, dict]] = None, + *, + token_auth_user: Optional[str] = None, + auth_token: Optional[cloud_redis_cluster.AuthToken] = None, + retry: OptionalRetry = gapic_v1.method.DEFAULT, + timeout: Union[float, object] = gapic_v1.method.DEFAULT, + metadata: Sequence[Tuple[str, Union[str, bytes]]] = (), + ) -> operation_async.AsyncOperation: + r"""Adds a auth token for a user of a token based auth + enabled cluster. + + .. 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 redis_cluster_v1beta1 + + async def sample_add_auth_token(): + # Create a client + client = redis_cluster_v1beta1.CloudRedisClusterAsyncClient() + + # Initialize request argument(s) + request = redis_cluster_v1beta1.AddAuthTokenRequest( + token_auth_user="token_auth_user_value", + ) + + # Make the request + operation = await client.add_auth_token(request=request) + + print("Waiting for operation to complete...") + + response = await operation.result() + + # Handle the response + print(response) + + Args: + request (Optional[Union[google.cloud.redis_cluster_v1beta1.types.AddAuthTokenRequest, dict]]): + The request object. Request message for [AddAuthToken][]. + token_auth_user (:class:`str`): + Required. The name of the token auth user resource that + this auth token will be added for. Format: + projects/{project}/locations/{location}/clusters/{cluster}/tokenAuthUsers/{token_auth_user} + + This corresponds to the ``token_auth_user`` field + on the ``request`` instance; if ``request`` is provided, this + should not be set. + auth_token (:class:`google.cloud.redis_cluster_v1beta1.types.AuthToken`): + Required. The auth token to add. + This corresponds to the ``auth_token`` 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.api_core.operation_async.AsyncOperation: + An object representing a long-running operation. + + The result type for the operation will be + :class:`google.cloud.redis_cluster_v1beta1.types.TokenAuthUser` + Represents a token based auth user for the cluster. + + """ + # 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 = [token_auth_user, auth_token] + 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, cloud_redis_cluster.AddAuthTokenRequest): + request = cloud_redis_cluster.AddAuthTokenRequest(request) + + # If we have keyword arguments corresponding to fields on the + # request, apply these. + if token_auth_user is not None: + request.token_auth_user = token_auth_user + if auth_token is not None: + request.auth_token = auth_token + + # Wrap the RPC method; this adds retry and timeout information, + # and friendly error handling. + rpc = self._client._transport._wrapped_methods[ + self._client._transport.add_auth_token + ] + + # Certain fields should be provided within the metadata header; + # add these here. + metadata = tuple(metadata) + ( + gapic_v1.routing_header.to_grpc_metadata( + (("token_auth_user", request.token_auth_user),) + ), + ) + + # Validate the universe domain. + self._client._validate_universe_domain() + + # Send the request. + response = await rpc( + request, + retry=retry, + timeout=timeout, + metadata=metadata, + ) + + # Wrap the response in an operation future. + response = operation_async.from_gapic( + response, + self._client._transport.operations_client, + cloud_redis_cluster.TokenAuthUser, + metadata_type=cloud_redis_cluster.OperationMetadata, + ) + + # Done; return the response. + return response + + async def delete_auth_token( + self, + request: Optional[ + Union[cloud_redis_cluster.DeleteAuthTokenRequest, 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]]] = (), + ) -> operation_async.AsyncOperation: + r"""Removes a auth token for a user of a token based auth + enabled instance. + + .. 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 redis_cluster_v1beta1 + + async def sample_delete_auth_token(): + # Create a client + client = redis_cluster_v1beta1.CloudRedisClusterAsyncClient() + + # Initialize request argument(s) + request = redis_cluster_v1beta1.DeleteAuthTokenRequest( + name="name_value", + ) + + # Make the request + operation = await client.delete_auth_token(request=request) + + print("Waiting for operation to complete...") + + response = await operation.result() + + # Handle the response + print(response) + + Args: + request (Optional[Union[google.cloud.redis_cluster_v1beta1.types.DeleteAuthTokenRequest, dict]]): + The request object. Request message for [DeleteAuthToken][]. + name (:class:`str`): + Required. The name of the token auth user resource that + this auth token will be deleted from. Format: + projects/{project}/locations/{location}/clusters/{cluster}/tokenAuthUsers/{token_auth_user}/authTokens/{auth_token} + + 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.api_core.operation_async.AsyncOperation: + An object representing a long-running operation. + + The result type for the operation will be :class:`google.protobuf.empty_pb2.Empty` A generic empty message that you can re-use to avoid defining duplicated + empty messages in your APIs. A typical example is to + use it as the request or the response type of an API + method. For instance: + + service Foo { + rpc Bar(google.protobuf.Empty) returns + (google.protobuf.Empty); + + } + + """ + # 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, cloud_redis_cluster.DeleteAuthTokenRequest): + request = cloud_redis_cluster.DeleteAuthTokenRequest(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_auth_token + ] + + # 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, + ) + + # Wrap the response in an operation future. + response = operation_async.from_gapic( + response, + self._client._transport.operations_client, + empty_pb2.Empty, + metadata_type=cloud_redis_cluster.OperationMetadata, + ) + + # Done; return the response. + return response + async def list_operations( self, request: Optional[Union[operations_pb2.ListOperationsRequest, dict]] = None, diff --git a/packages/google-cloud-redis-cluster/google/cloud/redis_cluster_v1beta1/services/cloud_redis_cluster/client.py b/packages/google-cloud-redis-cluster/google/cloud/redis_cluster_v1beta1/services/cloud_redis_cluster/client.py index dca46764e014..c7d5298f6177 100644 --- a/packages/google-cloud-redis-cluster/google/cloud/redis_cluster_v1beta1/services/cloud_redis_cluster/client.py +++ b/packages/google-cloud-redis-cluster/google/cloud/redis_cluster_v1beta1/services/cloud_redis_cluster/client.py @@ -246,6 +246,32 @@ def parse_acl_policy_revision_path(path: str) -> Dict[str, str]: ) return m.groupdict() if m else {} + @staticmethod + def auth_token_path( + project: str, + location: str, + cluster: str, + token_auth_user: str, + auth_token: str, + ) -> str: + """Returns a fully-qualified auth_token string.""" + return "projects/{project}/locations/{location}/clusters/{cluster}/tokenAuthUsers/{token_auth_user}/authTokens/{auth_token}".format( + project=project, + location=location, + cluster=cluster, + token_auth_user=token_auth_user, + auth_token=auth_token, + ) + + @staticmethod + def parse_auth_token_path(path: str) -> Dict[str, str]: + """Parses a auth_token path into its component segments.""" + m = re.match( + r"^projects/(?P.+?)/locations/(?P.+?)/clusters/(?P.+?)/tokenAuthUsers/(?P.+?)/authTokens/(?P.+?)$", + path, + ) + return m.groupdict() if m else {} + @staticmethod def backup_path( project: str, @@ -491,6 +517,30 @@ def parse_shared_regional_certificate_authority_path(path: str) -> Dict[str, str ) return m.groupdict() if m else {} + @staticmethod + def token_auth_user_path( + project: str, + location: str, + cluster: str, + token_auth_user: str, + ) -> str: + """Returns a fully-qualified token_auth_user string.""" + return "projects/{project}/locations/{location}/clusters/{cluster}/tokenAuthUsers/{token_auth_user}".format( + project=project, + location=location, + cluster=cluster, + token_auth_user=token_auth_user, + ) + + @staticmethod + def parse_token_auth_user_path(path: str) -> Dict[str, str]: + """Parses a token_auth_user path into its component segments.""" + m = re.match( + r"^projects/(?P.+?)/locations/(?P.+?)/clusters/(?P.+?)/tokenAuthUsers/(?P.+?)$", + path, + ) + return m.groupdict() if m else {} + @staticmethod def common_billing_account_path( billing_account: str, @@ -3707,6 +3757,1014 @@ def sample_backup_cluster(): # Done; return the response. return response + def list_token_auth_users( + self, + request: Optional[ + Union[cloud_redis_cluster.ListTokenAuthUsersRequest, 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.ListTokenAuthUsersPager: + r"""Lists all the token auth users for a token based auth + enabled cluster. + + .. 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 redis_cluster_v1beta1 + + def sample_list_token_auth_users(): + # Create a client + client = redis_cluster_v1beta1.CloudRedisClusterClient() + + # Initialize request argument(s) + request = redis_cluster_v1beta1.ListTokenAuthUsersRequest( + parent="parent_value", + ) + + # Make the request + page_result = client.list_token_auth_users(request=request) + + # Handle the response + for response in page_result: + print(response) + + Args: + request (Union[google.cloud.redis_cluster_v1beta1.types.ListTokenAuthUsersRequest, dict]): + The request object. Request message for [ListTokenAuthUsers][]. + parent (str): + Required. The parent resource that + this token based auth user will be + listed for. Format: + + projects/{project}/locations/{location}/clusters/{cluster} + + 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.redis_cluster_v1beta1.services.cloud_redis_cluster.pagers.ListTokenAuthUsersPager: + Response message for [ListTokenAuthUsers][]. + + 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, cloud_redis_cluster.ListTokenAuthUsersRequest): + request = cloud_redis_cluster.ListTokenAuthUsersRequest(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_token_auth_users] + + # 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.ListTokenAuthUsersPager( + method=rpc, + request=request, + response=response, + retry=retry, + timeout=timeout, + metadata=metadata, + ) + + # Done; return the response. + return response + + def get_token_auth_user( + self, + request: Optional[ + Union[cloud_redis_cluster.GetTokenAuthUserRequest, 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]]] = (), + ) -> cloud_redis_cluster.TokenAuthUser: + r"""Gets a specific token auth user for a basic auth + enabled cluster. + + .. 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 redis_cluster_v1beta1 + + def sample_get_token_auth_user(): + # Create a client + client = redis_cluster_v1beta1.CloudRedisClusterClient() + + # Initialize request argument(s) + request = redis_cluster_v1beta1.GetTokenAuthUserRequest( + name="name_value", + ) + + # Make the request + response = client.get_token_auth_user(request=request) + + # Handle the response + print(response) + + Args: + request (Union[google.cloud.redis_cluster_v1beta1.types.GetTokenAuthUserRequest, dict]): + The request object. Request message for [GetTokenAuthUser][]. + name (str): + Required. The name of token auth user for a token based + auth enabled cluster. Format: + projects/{project}/locations/{location}/clusters/{cluster}/tokenAuthUsers/{token_auth_user} + + 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.redis_cluster_v1beta1.types.TokenAuthUser: + Represents a token based auth user + for the cluster. + + """ + # 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, cloud_redis_cluster.GetTokenAuthUserRequest): + request = cloud_redis_cluster.GetTokenAuthUserRequest(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_token_auth_user] + + # 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 list_auth_tokens( + self, + request: Optional[ + Union[cloud_redis_cluster.ListAuthTokensRequest, 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.ListAuthTokensPager: + r"""Lists all the auth tokens for a specific token auth + user. + + .. 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 redis_cluster_v1beta1 + + def sample_list_auth_tokens(): + # Create a client + client = redis_cluster_v1beta1.CloudRedisClusterClient() + + # Initialize request argument(s) + request = redis_cluster_v1beta1.ListAuthTokensRequest( + parent="parent_value", + ) + + # Make the request + page_result = client.list_auth_tokens(request=request) + + # Handle the response + for response in page_result: + print(response) + + Args: + request (Union[google.cloud.redis_cluster_v1beta1.types.ListAuthTokensRequest, dict]): + The request object. Request message for [ListAuthTokens][]. + parent (str): + Required. The parent resource that this auth token will + be listed for. Format: + projects/{project}/locations/{location}/clusters/{cluster}/tokenAuthUsers/{token_auth_user} + + 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.redis_cluster_v1beta1.services.cloud_redis_cluster.pagers.ListAuthTokensPager: + Response message for [ListAuthTokens][]. + + 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, cloud_redis_cluster.ListAuthTokensRequest): + request = cloud_redis_cluster.ListAuthTokensRequest(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_auth_tokens] + + # 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.ListAuthTokensPager( + method=rpc, + request=request, + response=response, + retry=retry, + timeout=timeout, + metadata=metadata, + ) + + # Done; return the response. + return response + + def get_auth_token( + self, + request: Optional[Union[cloud_redis_cluster.GetAuthTokenRequest, 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]]] = (), + ) -> cloud_redis_cluster.AuthToken: + r"""Gets a specific auth token for a specific token auth + user. + + .. 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 redis_cluster_v1beta1 + + def sample_get_auth_token(): + # Create a client + client = redis_cluster_v1beta1.CloudRedisClusterClient() + + # Initialize request argument(s) + request = redis_cluster_v1beta1.GetAuthTokenRequest( + name="name_value", + ) + + # Make the request + response = client.get_auth_token(request=request) + + # Handle the response + print(response) + + Args: + request (Union[google.cloud.redis_cluster_v1beta1.types.GetAuthTokenRequest, dict]): + The request object. Request message for [GetAuthToken][]. + name (str): + Required. The name of auth token for a token based auth + enabled cluster. Format: + projects/{project}/locations/{location}/clusters/{cluster}/tokenAuthUsers/{token_auth_user}/authTokens/{auth_token} + + 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.redis_cluster_v1beta1.types.AuthToken: + Auth token for the cluster. + """ + # 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, cloud_redis_cluster.GetAuthTokenRequest): + request = cloud_redis_cluster.GetAuthTokenRequest(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_auth_token] + + # 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 add_token_auth_user( + self, + request: Optional[ + Union[cloud_redis_cluster.AddTokenAuthUserRequest, dict] + ] = None, + *, + cluster: Optional[str] = None, + token_auth_user: Optional[str] = None, + retry: OptionalRetry = gapic_v1.method.DEFAULT, + timeout: Union[float, object] = gapic_v1.method.DEFAULT, + metadata: Sequence[Tuple[str, Union[str, bytes]]] = (), + ) -> operation.Operation: + r"""Adds a token auth user for a token based auth enabled + cluster. + + .. 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 redis_cluster_v1beta1 + + def sample_add_token_auth_user(): + # Create a client + client = redis_cluster_v1beta1.CloudRedisClusterClient() + + # Initialize request argument(s) + request = redis_cluster_v1beta1.AddTokenAuthUserRequest( + cluster="cluster_value", + token_auth_user="token_auth_user_value", + ) + + # Make the request + operation = client.add_token_auth_user(request=request) + + print("Waiting for operation to complete...") + + response = operation.result() + + # Handle the response + print(response) + + Args: + request (Union[google.cloud.redis_cluster_v1beta1.types.AddTokenAuthUserRequest, dict]): + The request object. Request message for [AddTokenAuthUser][]. + cluster (str): + Required. The cluster resource that + this token auth user will be added for. + Format: + projects/{project}/locations/{location}/clusters/{cluster} + + This corresponds to the ``cluster`` field + on the ``request`` instance; if ``request`` is provided, this + should not be set. + token_auth_user (str): + Required. The id of the token auth + user to add. + + This corresponds to the ``token_auth_user`` 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.operation.Operation: + An object representing a long-running operation. + + The result type for the operation will be + :class:`google.cloud.redis_cluster_v1beta1.types.Cluster` + A cluster 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 = [cluster, token_auth_user] + 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, cloud_redis_cluster.AddTokenAuthUserRequest): + request = cloud_redis_cluster.AddTokenAuthUserRequest(request) + # If we have keyword arguments corresponding to fields on the + # request, apply these. + if cluster is not None: + request.cluster = cluster + if token_auth_user is not None: + request.token_auth_user = token_auth_user + + # Wrap the RPC method; this adds retry and timeout information, + # and friendly error handling. + rpc = self._transport._wrapped_methods[self._transport.add_token_auth_user] + + # Certain fields should be provided within the metadata header; + # add these here. + metadata = tuple(metadata) + ( + gapic_v1.routing_header.to_grpc_metadata((("cluster", request.cluster),)), + ) + + # Validate the universe domain. + self._validate_universe_domain() + + # Send the request. + response = rpc( + request, + retry=retry, + timeout=timeout, + metadata=metadata, + ) + + # Wrap the response in an operation future. + response = operation.from_gapic( + response, + self._transport.operations_client, + cloud_redis_cluster.Cluster, + metadata_type=cloud_redis_cluster.OperationMetadata, + ) + + # Done; return the response. + return response + + def delete_token_auth_user( + self, + request: Optional[ + Union[cloud_redis_cluster.DeleteTokenAuthUserRequest, 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]]] = (), + ) -> operation.Operation: + r"""Deletes a token auth user for a token based auth + enabled cluster. + + .. 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 redis_cluster_v1beta1 + + def sample_delete_token_auth_user(): + # Create a client + client = redis_cluster_v1beta1.CloudRedisClusterClient() + + # Initialize request argument(s) + request = redis_cluster_v1beta1.DeleteTokenAuthUserRequest( + name="name_value", + ) + + # Make the request + operation = client.delete_token_auth_user(request=request) + + print("Waiting for operation to complete...") + + response = operation.result() + + # Handle the response + print(response) + + Args: + request (Union[google.cloud.redis_cluster_v1beta1.types.DeleteTokenAuthUserRequest, dict]): + The request object. Request message for [DeleteTokenAuthUser][]. + name (str): + Required. The name of the token auth user to delete. + Format: + projects/{project}/locations/{location}/clusters/{cluster}/tokenAuthUsers/{token_auth_user} + + 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.api_core.operation.Operation: + An object representing a long-running operation. + + The result type for the operation will be :class:`google.protobuf.empty_pb2.Empty` A generic empty message that you can re-use to avoid defining duplicated + empty messages in your APIs. A typical example is to + use it as the request or the response type of an API + method. For instance: + + service Foo { + rpc Bar(google.protobuf.Empty) returns + (google.protobuf.Empty); + + } + + """ + # 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, cloud_redis_cluster.DeleteTokenAuthUserRequest): + request = cloud_redis_cluster.DeleteTokenAuthUserRequest(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_token_auth_user] + + # 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, + ) + + # Wrap the response in an operation future. + response = operation.from_gapic( + response, + self._transport.operations_client, + empty_pb2.Empty, + metadata_type=cloud_redis_cluster.OperationMetadata, + ) + + # Done; return the response. + return response + + def add_auth_token( + self, + request: Optional[Union[cloud_redis_cluster.AddAuthTokenRequest, dict]] = None, + *, + token_auth_user: Optional[str] = None, + auth_token: Optional[cloud_redis_cluster.AuthToken] = None, + retry: OptionalRetry = gapic_v1.method.DEFAULT, + timeout: Union[float, object] = gapic_v1.method.DEFAULT, + metadata: Sequence[Tuple[str, Union[str, bytes]]] = (), + ) -> operation.Operation: + r"""Adds a auth token for a user of a token based auth + enabled cluster. + + .. 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 redis_cluster_v1beta1 + + def sample_add_auth_token(): + # Create a client + client = redis_cluster_v1beta1.CloudRedisClusterClient() + + # Initialize request argument(s) + request = redis_cluster_v1beta1.AddAuthTokenRequest( + token_auth_user="token_auth_user_value", + ) + + # Make the request + operation = client.add_auth_token(request=request) + + print("Waiting for operation to complete...") + + response = operation.result() + + # Handle the response + print(response) + + Args: + request (Union[google.cloud.redis_cluster_v1beta1.types.AddAuthTokenRequest, dict]): + The request object. Request message for [AddAuthToken][]. + token_auth_user (str): + Required. The name of the token auth user resource that + this auth token will be added for. Format: + projects/{project}/locations/{location}/clusters/{cluster}/tokenAuthUsers/{token_auth_user} + + This corresponds to the ``token_auth_user`` field + on the ``request`` instance; if ``request`` is provided, this + should not be set. + auth_token (google.cloud.redis_cluster_v1beta1.types.AuthToken): + Required. The auth token to add. + This corresponds to the ``auth_token`` 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.operation.Operation: + An object representing a long-running operation. + + The result type for the operation will be + :class:`google.cloud.redis_cluster_v1beta1.types.TokenAuthUser` + Represents a token based auth user for the cluster. + + """ + # 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 = [token_auth_user, auth_token] + 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, cloud_redis_cluster.AddAuthTokenRequest): + request = cloud_redis_cluster.AddAuthTokenRequest(request) + # If we have keyword arguments corresponding to fields on the + # request, apply these. + if token_auth_user is not None: + request.token_auth_user = token_auth_user + if auth_token is not None: + request.auth_token = auth_token + + # Wrap the RPC method; this adds retry and timeout information, + # and friendly error handling. + rpc = self._transport._wrapped_methods[self._transport.add_auth_token] + + # Certain fields should be provided within the metadata header; + # add these here. + metadata = tuple(metadata) + ( + gapic_v1.routing_header.to_grpc_metadata( + (("token_auth_user", request.token_auth_user),) + ), + ) + + # Validate the universe domain. + self._validate_universe_domain() + + # Send the request. + response = rpc( + request, + retry=retry, + timeout=timeout, + metadata=metadata, + ) + + # Wrap the response in an operation future. + response = operation.from_gapic( + response, + self._transport.operations_client, + cloud_redis_cluster.TokenAuthUser, + metadata_type=cloud_redis_cluster.OperationMetadata, + ) + + # Done; return the response. + return response + + def delete_auth_token( + self, + request: Optional[ + Union[cloud_redis_cluster.DeleteAuthTokenRequest, 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]]] = (), + ) -> operation.Operation: + r"""Removes a auth token for a user of a token based auth + enabled instance. + + .. 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 redis_cluster_v1beta1 + + def sample_delete_auth_token(): + # Create a client + client = redis_cluster_v1beta1.CloudRedisClusterClient() + + # Initialize request argument(s) + request = redis_cluster_v1beta1.DeleteAuthTokenRequest( + name="name_value", + ) + + # Make the request + operation = client.delete_auth_token(request=request) + + print("Waiting for operation to complete...") + + response = operation.result() + + # Handle the response + print(response) + + Args: + request (Union[google.cloud.redis_cluster_v1beta1.types.DeleteAuthTokenRequest, dict]): + The request object. Request message for [DeleteAuthToken][]. + name (str): + Required. The name of the token auth user resource that + this auth token will be deleted from. Format: + projects/{project}/locations/{location}/clusters/{cluster}/tokenAuthUsers/{token_auth_user}/authTokens/{auth_token} + + 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.api_core.operation.Operation: + An object representing a long-running operation. + + The result type for the operation will be :class:`google.protobuf.empty_pb2.Empty` A generic empty message that you can re-use to avoid defining duplicated + empty messages in your APIs. A typical example is to + use it as the request or the response type of an API + method. For instance: + + service Foo { + rpc Bar(google.protobuf.Empty) returns + (google.protobuf.Empty); + + } + + """ + # 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, cloud_redis_cluster.DeleteAuthTokenRequest): + request = cloud_redis_cluster.DeleteAuthTokenRequest(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_auth_token] + + # 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, + ) + + # Wrap the response in an operation future. + response = operation.from_gapic( + response, + self._transport.operations_client, + empty_pb2.Empty, + metadata_type=cloud_redis_cluster.OperationMetadata, + ) + + # Done; return the response. + return response + def __enter__(self) -> "CloudRedisClusterClient": return self diff --git a/packages/google-cloud-redis-cluster/google/cloud/redis_cluster_v1beta1/services/cloud_redis_cluster/pagers.py b/packages/google-cloud-redis-cluster/google/cloud/redis_cluster_v1beta1/services/cloud_redis_cluster/pagers.py index 8e3f2e0ef3e6..8d18cb519015 100644 --- a/packages/google-cloud-redis-cluster/google/cloud/redis_cluster_v1beta1/services/cloud_redis_cluster/pagers.py +++ b/packages/google-cloud-redis-cluster/google/cloud/redis_cluster_v1beta1/services/cloud_redis_cluster/pagers.py @@ -827,3 +827,319 @@ async def async_generator(): def __repr__(self) -> str: return "{0}<{1!r}>".format(self.__class__.__name__, self._response) + + +class ListTokenAuthUsersPager: + """A pager for iterating through ``list_token_auth_users`` requests. + + This class thinly wraps an initial + :class:`google.cloud.redis_cluster_v1beta1.types.ListTokenAuthUsersResponse` object, and + provides an ``__iter__`` method to iterate through its + ``token_auth_users`` field. + + If there are more pages, the ``__iter__`` method will make additional + ``ListTokenAuthUsers`` requests and continue to iterate + through the ``token_auth_users`` field on the + corresponding responses. + + All the usual :class:`google.cloud.redis_cluster_v1beta1.types.ListTokenAuthUsersResponse` + 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[..., cloud_redis_cluster.ListTokenAuthUsersResponse], + request: cloud_redis_cluster.ListTokenAuthUsersRequest, + response: cloud_redis_cluster.ListTokenAuthUsersResponse, + *, + 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.redis_cluster_v1beta1.types.ListTokenAuthUsersRequest): + The initial request object. + response (google.cloud.redis_cluster_v1beta1.types.ListTokenAuthUsersResponse): + 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 = cloud_redis_cluster.ListTokenAuthUsersRequest(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[cloud_redis_cluster.ListTokenAuthUsersResponse]: + 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[cloud_redis_cluster.TokenAuthUser]: + for page in self.pages: + yield from page.token_auth_users + + def __repr__(self) -> str: + return "{0}<{1!r}>".format(self.__class__.__name__, self._response) + + +class ListTokenAuthUsersAsyncPager: + """A pager for iterating through ``list_token_auth_users`` requests. + + This class thinly wraps an initial + :class:`google.cloud.redis_cluster_v1beta1.types.ListTokenAuthUsersResponse` object, and + provides an ``__aiter__`` method to iterate through its + ``token_auth_users`` field. + + If there are more pages, the ``__aiter__`` method will make additional + ``ListTokenAuthUsers`` requests and continue to iterate + through the ``token_auth_users`` field on the + corresponding responses. + + All the usual :class:`google.cloud.redis_cluster_v1beta1.types.ListTokenAuthUsersResponse` + 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[cloud_redis_cluster.ListTokenAuthUsersResponse] + ], + request: cloud_redis_cluster.ListTokenAuthUsersRequest, + response: cloud_redis_cluster.ListTokenAuthUsersResponse, + *, + 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.redis_cluster_v1beta1.types.ListTokenAuthUsersRequest): + The initial request object. + response (google.cloud.redis_cluster_v1beta1.types.ListTokenAuthUsersResponse): + 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 = cloud_redis_cluster.ListTokenAuthUsersRequest(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[cloud_redis_cluster.ListTokenAuthUsersResponse]: + 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[cloud_redis_cluster.TokenAuthUser]: + async def async_generator(): + async for page in self.pages: + for response in page.token_auth_users: + yield response + + return async_generator() + + def __repr__(self) -> str: + return "{0}<{1!r}>".format(self.__class__.__name__, self._response) + + +class ListAuthTokensPager: + """A pager for iterating through ``list_auth_tokens`` requests. + + This class thinly wraps an initial + :class:`google.cloud.redis_cluster_v1beta1.types.ListAuthTokensResponse` object, and + provides an ``__iter__`` method to iterate through its + ``auth_tokens`` field. + + If there are more pages, the ``__iter__`` method will make additional + ``ListAuthTokens`` requests and continue to iterate + through the ``auth_tokens`` field on the + corresponding responses. + + All the usual :class:`google.cloud.redis_cluster_v1beta1.types.ListAuthTokensResponse` + 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[..., cloud_redis_cluster.ListAuthTokensResponse], + request: cloud_redis_cluster.ListAuthTokensRequest, + response: cloud_redis_cluster.ListAuthTokensResponse, + *, + 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.redis_cluster_v1beta1.types.ListAuthTokensRequest): + The initial request object. + response (google.cloud.redis_cluster_v1beta1.types.ListAuthTokensResponse): + 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 = cloud_redis_cluster.ListAuthTokensRequest(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[cloud_redis_cluster.ListAuthTokensResponse]: + 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[cloud_redis_cluster.AuthToken]: + for page in self.pages: + yield from page.auth_tokens + + def __repr__(self) -> str: + return "{0}<{1!r}>".format(self.__class__.__name__, self._response) + + +class ListAuthTokensAsyncPager: + """A pager for iterating through ``list_auth_tokens`` requests. + + This class thinly wraps an initial + :class:`google.cloud.redis_cluster_v1beta1.types.ListAuthTokensResponse` object, and + provides an ``__aiter__`` method to iterate through its + ``auth_tokens`` field. + + If there are more pages, the ``__aiter__`` method will make additional + ``ListAuthTokens`` requests and continue to iterate + through the ``auth_tokens`` field on the + corresponding responses. + + All the usual :class:`google.cloud.redis_cluster_v1beta1.types.ListAuthTokensResponse` + 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[cloud_redis_cluster.ListAuthTokensResponse]], + request: cloud_redis_cluster.ListAuthTokensRequest, + response: cloud_redis_cluster.ListAuthTokensResponse, + *, + 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.redis_cluster_v1beta1.types.ListAuthTokensRequest): + The initial request object. + response (google.cloud.redis_cluster_v1beta1.types.ListAuthTokensResponse): + 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 = cloud_redis_cluster.ListAuthTokensRequest(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[cloud_redis_cluster.ListAuthTokensResponse]: + 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[cloud_redis_cluster.AuthToken]: + async def async_generator(): + async for page in self.pages: + for response in page.auth_tokens: + 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-redis-cluster/google/cloud/redis_cluster_v1beta1/services/cloud_redis_cluster/transports/base.py b/packages/google-cloud-redis-cluster/google/cloud/redis_cluster_v1beta1/services/cloud_redis_cluster/transports/base.py index c47acc8532a2..e856a4b09f8a 100644 --- a/packages/google-cloud-redis-cluster/google/cloud/redis_cluster_v1beta1/services/cloud_redis_cluster/transports/base.py +++ b/packages/google-cloud-redis-cluster/google/cloud/redis_cluster_v1beta1/services/cloud_redis_cluster/transports/base.py @@ -252,6 +252,46 @@ def _prep_wrapped_messages(self, client_info): default_timeout=600.0, client_info=client_info, ), + self.list_token_auth_users: gapic_v1.method.wrap_method( + self.list_token_auth_users, + default_timeout=None, + client_info=client_info, + ), + self.get_token_auth_user: gapic_v1.method.wrap_method( + self.get_token_auth_user, + default_timeout=None, + client_info=client_info, + ), + self.list_auth_tokens: gapic_v1.method.wrap_method( + self.list_auth_tokens, + default_timeout=None, + client_info=client_info, + ), + self.get_auth_token: gapic_v1.method.wrap_method( + self.get_auth_token, + default_timeout=None, + client_info=client_info, + ), + self.add_token_auth_user: gapic_v1.method.wrap_method( + self.add_token_auth_user, + default_timeout=None, + client_info=client_info, + ), + self.delete_token_auth_user: gapic_v1.method.wrap_method( + self.delete_token_auth_user, + default_timeout=None, + client_info=client_info, + ), + self.add_auth_token: gapic_v1.method.wrap_method( + self.add_auth_token, + default_timeout=None, + client_info=client_info, + ), + self.delete_auth_token: gapic_v1.method.wrap_method( + self.delete_auth_token, + default_timeout=None, + client_info=client_info, + ), self.get_location: gapic_v1.method.wrap_method( self.get_location, default_timeout=None, @@ -523,6 +563,87 @@ def backup_cluster( ]: raise NotImplementedError() + @property + def list_token_auth_users( + self, + ) -> Callable[ + [cloud_redis_cluster.ListTokenAuthUsersRequest], + Union[ + cloud_redis_cluster.ListTokenAuthUsersResponse, + Awaitable[cloud_redis_cluster.ListTokenAuthUsersResponse], + ], + ]: + raise NotImplementedError() + + @property + def get_token_auth_user( + self, + ) -> Callable[ + [cloud_redis_cluster.GetTokenAuthUserRequest], + Union[ + cloud_redis_cluster.TokenAuthUser, + Awaitable[cloud_redis_cluster.TokenAuthUser], + ], + ]: + raise NotImplementedError() + + @property + def list_auth_tokens( + self, + ) -> Callable[ + [cloud_redis_cluster.ListAuthTokensRequest], + Union[ + cloud_redis_cluster.ListAuthTokensResponse, + Awaitable[cloud_redis_cluster.ListAuthTokensResponse], + ], + ]: + raise NotImplementedError() + + @property + def get_auth_token( + self, + ) -> Callable[ + [cloud_redis_cluster.GetAuthTokenRequest], + Union[cloud_redis_cluster.AuthToken, Awaitable[cloud_redis_cluster.AuthToken]], + ]: + raise NotImplementedError() + + @property + def add_token_auth_user( + self, + ) -> Callable[ + [cloud_redis_cluster.AddTokenAuthUserRequest], + Union[operations_pb2.Operation, Awaitable[operations_pb2.Operation]], + ]: + raise NotImplementedError() + + @property + def delete_token_auth_user( + self, + ) -> Callable[ + [cloud_redis_cluster.DeleteTokenAuthUserRequest], + Union[operations_pb2.Operation, Awaitable[operations_pb2.Operation]], + ]: + raise NotImplementedError() + + @property + def add_auth_token( + self, + ) -> Callable[ + [cloud_redis_cluster.AddAuthTokenRequest], + Union[operations_pb2.Operation, Awaitable[operations_pb2.Operation]], + ]: + raise NotImplementedError() + + @property + def delete_auth_token( + self, + ) -> Callable[ + [cloud_redis_cluster.DeleteAuthTokenRequest], + Union[operations_pb2.Operation, Awaitable[operations_pb2.Operation]], + ]: + raise NotImplementedError() + @property def list_operations( self, diff --git a/packages/google-cloud-redis-cluster/google/cloud/redis_cluster_v1beta1/services/cloud_redis_cluster/transports/grpc.py b/packages/google-cloud-redis-cluster/google/cloud/redis_cluster_v1beta1/services/cloud_redis_cluster/transports/grpc.py index c518e1c29087..3e6c56c633c2 100644 --- a/packages/google-cloud-redis-cluster/google/cloud/redis_cluster_v1beta1/services/cloud_redis_cluster/transports/grpc.py +++ b/packages/google-cloud-redis-cluster/google/cloud/redis_cluster_v1beta1/services/cloud_redis_cluster/transports/grpc.py @@ -1053,6 +1053,238 @@ def backup_cluster( ) return self._stubs["backup_cluster"] + @property + def list_token_auth_users( + self, + ) -> Callable[ + [cloud_redis_cluster.ListTokenAuthUsersRequest], + cloud_redis_cluster.ListTokenAuthUsersResponse, + ]: + r"""Return a callable for the list token auth users method over gRPC. + + Lists all the token auth users for a token based auth + enabled cluster. + + Returns: + Callable[[~.ListTokenAuthUsersRequest], + ~.ListTokenAuthUsersResponse]: + 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_token_auth_users" not in self._stubs: + self._stubs["list_token_auth_users"] = self._logged_channel.unary_unary( + "/google.cloud.redis.cluster.v1beta1.CloudRedisCluster/ListTokenAuthUsers", + request_serializer=cloud_redis_cluster.ListTokenAuthUsersRequest.serialize, + response_deserializer=cloud_redis_cluster.ListTokenAuthUsersResponse.deserialize, + ) + return self._stubs["list_token_auth_users"] + + @property + def get_token_auth_user( + self, + ) -> Callable[ + [cloud_redis_cluster.GetTokenAuthUserRequest], cloud_redis_cluster.TokenAuthUser + ]: + r"""Return a callable for the get token auth user method over gRPC. + + Gets a specific token auth user for a basic auth + enabled cluster. + + Returns: + Callable[[~.GetTokenAuthUserRequest], + ~.TokenAuthUser]: + 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_token_auth_user" not in self._stubs: + self._stubs["get_token_auth_user"] = self._logged_channel.unary_unary( + "/google.cloud.redis.cluster.v1beta1.CloudRedisCluster/GetTokenAuthUser", + request_serializer=cloud_redis_cluster.GetTokenAuthUserRequest.serialize, + response_deserializer=cloud_redis_cluster.TokenAuthUser.deserialize, + ) + return self._stubs["get_token_auth_user"] + + @property + def list_auth_tokens( + self, + ) -> Callable[ + [cloud_redis_cluster.ListAuthTokensRequest], + cloud_redis_cluster.ListAuthTokensResponse, + ]: + r"""Return a callable for the list auth tokens method over gRPC. + + Lists all the auth tokens for a specific token auth + user. + + Returns: + Callable[[~.ListAuthTokensRequest], + ~.ListAuthTokensResponse]: + 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_auth_tokens" not in self._stubs: + self._stubs["list_auth_tokens"] = self._logged_channel.unary_unary( + "/google.cloud.redis.cluster.v1beta1.CloudRedisCluster/ListAuthTokens", + request_serializer=cloud_redis_cluster.ListAuthTokensRequest.serialize, + response_deserializer=cloud_redis_cluster.ListAuthTokensResponse.deserialize, + ) + return self._stubs["list_auth_tokens"] + + @property + def get_auth_token( + self, + ) -> Callable[ + [cloud_redis_cluster.GetAuthTokenRequest], cloud_redis_cluster.AuthToken + ]: + r"""Return a callable for the get auth token method over gRPC. + + Gets a specific auth token for a specific token auth + user. + + Returns: + Callable[[~.GetAuthTokenRequest], + ~.AuthToken]: + 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_auth_token" not in self._stubs: + self._stubs["get_auth_token"] = self._logged_channel.unary_unary( + "/google.cloud.redis.cluster.v1beta1.CloudRedisCluster/GetAuthToken", + request_serializer=cloud_redis_cluster.GetAuthTokenRequest.serialize, + response_deserializer=cloud_redis_cluster.AuthToken.deserialize, + ) + return self._stubs["get_auth_token"] + + @property + def add_token_auth_user( + self, + ) -> Callable[ + [cloud_redis_cluster.AddTokenAuthUserRequest], operations_pb2.Operation + ]: + r"""Return a callable for the add token auth user method over gRPC. + + Adds a token auth user for a token based auth enabled + cluster. + + Returns: + Callable[[~.AddTokenAuthUserRequest], + ~.Operation]: + 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 "add_token_auth_user" not in self._stubs: + self._stubs["add_token_auth_user"] = self._logged_channel.unary_unary( + "/google.cloud.redis.cluster.v1beta1.CloudRedisCluster/AddTokenAuthUser", + request_serializer=cloud_redis_cluster.AddTokenAuthUserRequest.serialize, + response_deserializer=operations_pb2.Operation.FromString, + ) + return self._stubs["add_token_auth_user"] + + @property + def delete_token_auth_user( + self, + ) -> Callable[ + [cloud_redis_cluster.DeleteTokenAuthUserRequest], operations_pb2.Operation + ]: + r"""Return a callable for the delete token auth user method over gRPC. + + Deletes a token auth user for a token based auth + enabled cluster. + + Returns: + Callable[[~.DeleteTokenAuthUserRequest], + ~.Operation]: + 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_token_auth_user" not in self._stubs: + self._stubs["delete_token_auth_user"] = self._logged_channel.unary_unary( + "/google.cloud.redis.cluster.v1beta1.CloudRedisCluster/DeleteTokenAuthUser", + request_serializer=cloud_redis_cluster.DeleteTokenAuthUserRequest.serialize, + response_deserializer=operations_pb2.Operation.FromString, + ) + return self._stubs["delete_token_auth_user"] + + @property + def add_auth_token( + self, + ) -> Callable[[cloud_redis_cluster.AddAuthTokenRequest], operations_pb2.Operation]: + r"""Return a callable for the add auth token method over gRPC. + + Adds a auth token for a user of a token based auth + enabled cluster. + + Returns: + Callable[[~.AddAuthTokenRequest], + ~.Operation]: + 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 "add_auth_token" not in self._stubs: + self._stubs["add_auth_token"] = self._logged_channel.unary_unary( + "/google.cloud.redis.cluster.v1beta1.CloudRedisCluster/AddAuthToken", + request_serializer=cloud_redis_cluster.AddAuthTokenRequest.serialize, + response_deserializer=operations_pb2.Operation.FromString, + ) + return self._stubs["add_auth_token"] + + @property + def delete_auth_token( + self, + ) -> Callable[ + [cloud_redis_cluster.DeleteAuthTokenRequest], operations_pb2.Operation + ]: + r"""Return a callable for the delete auth token method over gRPC. + + Removes a auth token for a user of a token based auth + enabled instance. + + Returns: + Callable[[~.DeleteAuthTokenRequest], + ~.Operation]: + 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_auth_token" not in self._stubs: + self._stubs["delete_auth_token"] = self._logged_channel.unary_unary( + "/google.cloud.redis.cluster.v1beta1.CloudRedisCluster/DeleteAuthToken", + request_serializer=cloud_redis_cluster.DeleteAuthTokenRequest.serialize, + response_deserializer=operations_pb2.Operation.FromString, + ) + return self._stubs["delete_auth_token"] + def close(self): self._logged_channel.close() diff --git a/packages/google-cloud-redis-cluster/google/cloud/redis_cluster_v1beta1/services/cloud_redis_cluster/transports/grpc_asyncio.py b/packages/google-cloud-redis-cluster/google/cloud/redis_cluster_v1beta1/services/cloud_redis_cluster/transports/grpc_asyncio.py index 3ae339177f6a..39ed2d1df59d 100644 --- a/packages/google-cloud-redis-cluster/google/cloud/redis_cluster_v1beta1/services/cloud_redis_cluster/transports/grpc_asyncio.py +++ b/packages/google-cloud-redis-cluster/google/cloud/redis_cluster_v1beta1/services/cloud_redis_cluster/transports/grpc_asyncio.py @@ -1081,6 +1081,245 @@ def backup_cluster( ) return self._stubs["backup_cluster"] + @property + def list_token_auth_users( + self, + ) -> Callable[ + [cloud_redis_cluster.ListTokenAuthUsersRequest], + Awaitable[cloud_redis_cluster.ListTokenAuthUsersResponse], + ]: + r"""Return a callable for the list token auth users method over gRPC. + + Lists all the token auth users for a token based auth + enabled cluster. + + Returns: + Callable[[~.ListTokenAuthUsersRequest], + Awaitable[~.ListTokenAuthUsersResponse]]: + 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_token_auth_users" not in self._stubs: + self._stubs["list_token_auth_users"] = self._logged_channel.unary_unary( + "/google.cloud.redis.cluster.v1beta1.CloudRedisCluster/ListTokenAuthUsers", + request_serializer=cloud_redis_cluster.ListTokenAuthUsersRequest.serialize, + response_deserializer=cloud_redis_cluster.ListTokenAuthUsersResponse.deserialize, + ) + return self._stubs["list_token_auth_users"] + + @property + def get_token_auth_user( + self, + ) -> Callable[ + [cloud_redis_cluster.GetTokenAuthUserRequest], + Awaitable[cloud_redis_cluster.TokenAuthUser], + ]: + r"""Return a callable for the get token auth user method over gRPC. + + Gets a specific token auth user for a basic auth + enabled cluster. + + Returns: + Callable[[~.GetTokenAuthUserRequest], + Awaitable[~.TokenAuthUser]]: + 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_token_auth_user" not in self._stubs: + self._stubs["get_token_auth_user"] = self._logged_channel.unary_unary( + "/google.cloud.redis.cluster.v1beta1.CloudRedisCluster/GetTokenAuthUser", + request_serializer=cloud_redis_cluster.GetTokenAuthUserRequest.serialize, + response_deserializer=cloud_redis_cluster.TokenAuthUser.deserialize, + ) + return self._stubs["get_token_auth_user"] + + @property + def list_auth_tokens( + self, + ) -> Callable[ + [cloud_redis_cluster.ListAuthTokensRequest], + Awaitable[cloud_redis_cluster.ListAuthTokensResponse], + ]: + r"""Return a callable for the list auth tokens method over gRPC. + + Lists all the auth tokens for a specific token auth + user. + + Returns: + Callable[[~.ListAuthTokensRequest], + Awaitable[~.ListAuthTokensResponse]]: + 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_auth_tokens" not in self._stubs: + self._stubs["list_auth_tokens"] = self._logged_channel.unary_unary( + "/google.cloud.redis.cluster.v1beta1.CloudRedisCluster/ListAuthTokens", + request_serializer=cloud_redis_cluster.ListAuthTokensRequest.serialize, + response_deserializer=cloud_redis_cluster.ListAuthTokensResponse.deserialize, + ) + return self._stubs["list_auth_tokens"] + + @property + def get_auth_token( + self, + ) -> Callable[ + [cloud_redis_cluster.GetAuthTokenRequest], + Awaitable[cloud_redis_cluster.AuthToken], + ]: + r"""Return a callable for the get auth token method over gRPC. + + Gets a specific auth token for a specific token auth + user. + + Returns: + Callable[[~.GetAuthTokenRequest], + Awaitable[~.AuthToken]]: + 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_auth_token" not in self._stubs: + self._stubs["get_auth_token"] = self._logged_channel.unary_unary( + "/google.cloud.redis.cluster.v1beta1.CloudRedisCluster/GetAuthToken", + request_serializer=cloud_redis_cluster.GetAuthTokenRequest.serialize, + response_deserializer=cloud_redis_cluster.AuthToken.deserialize, + ) + return self._stubs["get_auth_token"] + + @property + def add_token_auth_user( + self, + ) -> Callable[ + [cloud_redis_cluster.AddTokenAuthUserRequest], + Awaitable[operations_pb2.Operation], + ]: + r"""Return a callable for the add token auth user method over gRPC. + + Adds a token auth user for a token based auth enabled + cluster. + + Returns: + Callable[[~.AddTokenAuthUserRequest], + Awaitable[~.Operation]]: + 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 "add_token_auth_user" not in self._stubs: + self._stubs["add_token_auth_user"] = self._logged_channel.unary_unary( + "/google.cloud.redis.cluster.v1beta1.CloudRedisCluster/AddTokenAuthUser", + request_serializer=cloud_redis_cluster.AddTokenAuthUserRequest.serialize, + response_deserializer=operations_pb2.Operation.FromString, + ) + return self._stubs["add_token_auth_user"] + + @property + def delete_token_auth_user( + self, + ) -> Callable[ + [cloud_redis_cluster.DeleteTokenAuthUserRequest], + Awaitable[operations_pb2.Operation], + ]: + r"""Return a callable for the delete token auth user method over gRPC. + + Deletes a token auth user for a token based auth + enabled cluster. + + Returns: + Callable[[~.DeleteTokenAuthUserRequest], + Awaitable[~.Operation]]: + 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_token_auth_user" not in self._stubs: + self._stubs["delete_token_auth_user"] = self._logged_channel.unary_unary( + "/google.cloud.redis.cluster.v1beta1.CloudRedisCluster/DeleteTokenAuthUser", + request_serializer=cloud_redis_cluster.DeleteTokenAuthUserRequest.serialize, + response_deserializer=operations_pb2.Operation.FromString, + ) + return self._stubs["delete_token_auth_user"] + + @property + def add_auth_token( + self, + ) -> Callable[ + [cloud_redis_cluster.AddAuthTokenRequest], Awaitable[operations_pb2.Operation] + ]: + r"""Return a callable for the add auth token method over gRPC. + + Adds a auth token for a user of a token based auth + enabled cluster. + + Returns: + Callable[[~.AddAuthTokenRequest], + Awaitable[~.Operation]]: + 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 "add_auth_token" not in self._stubs: + self._stubs["add_auth_token"] = self._logged_channel.unary_unary( + "/google.cloud.redis.cluster.v1beta1.CloudRedisCluster/AddAuthToken", + request_serializer=cloud_redis_cluster.AddAuthTokenRequest.serialize, + response_deserializer=operations_pb2.Operation.FromString, + ) + return self._stubs["add_auth_token"] + + @property + def delete_auth_token( + self, + ) -> Callable[ + [cloud_redis_cluster.DeleteAuthTokenRequest], + Awaitable[operations_pb2.Operation], + ]: + r"""Return a callable for the delete auth token method over gRPC. + + Removes a auth token for a user of a token based auth + enabled instance. + + Returns: + Callable[[~.DeleteAuthTokenRequest], + Awaitable[~.Operation]]: + 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_auth_token" not in self._stubs: + self._stubs["delete_auth_token"] = self._logged_channel.unary_unary( + "/google.cloud.redis.cluster.v1beta1.CloudRedisCluster/DeleteAuthToken", + request_serializer=cloud_redis_cluster.DeleteAuthTokenRequest.serialize, + response_deserializer=operations_pb2.Operation.FromString, + ) + return self._stubs["delete_auth_token"] + def _prep_wrapped_messages(self, client_info): """Precompute the wrapped methods, overriding the base class method to use async wrappers.""" self._wrapped_methods = { @@ -1194,6 +1433,46 @@ def _prep_wrapped_messages(self, client_info): default_timeout=600.0, client_info=client_info, ), + self.list_token_auth_users: self._wrap_method( + self.list_token_auth_users, + default_timeout=None, + client_info=client_info, + ), + self.get_token_auth_user: self._wrap_method( + self.get_token_auth_user, + default_timeout=None, + client_info=client_info, + ), + self.list_auth_tokens: self._wrap_method( + self.list_auth_tokens, + default_timeout=None, + client_info=client_info, + ), + self.get_auth_token: self._wrap_method( + self.get_auth_token, + default_timeout=None, + client_info=client_info, + ), + self.add_token_auth_user: self._wrap_method( + self.add_token_auth_user, + default_timeout=None, + client_info=client_info, + ), + self.delete_token_auth_user: self._wrap_method( + self.delete_token_auth_user, + default_timeout=None, + client_info=client_info, + ), + self.add_auth_token: self._wrap_method( + self.add_auth_token, + default_timeout=None, + client_info=client_info, + ), + self.delete_auth_token: self._wrap_method( + self.delete_auth_token, + default_timeout=None, + client_info=client_info, + ), self.get_location: self._wrap_method( self.get_location, default_timeout=None, diff --git a/packages/google-cloud-redis-cluster/google/cloud/redis_cluster_v1beta1/services/cloud_redis_cluster/transports/rest.py b/packages/google-cloud-redis-cluster/google/cloud/redis_cluster_v1beta1/services/cloud_redis_cluster/transports/rest.py index 667cfbdc9850..1c68dd9c8434 100644 --- a/packages/google-cloud-redis-cluster/google/cloud/redis_cluster_v1beta1/services/cloud_redis_cluster/transports/rest.py +++ b/packages/google-cloud-redis-cluster/google/cloud/redis_cluster_v1beta1/services/cloud_redis_cluster/transports/rest.py @@ -74,6 +74,22 @@ class CloudRedisClusterRestInterceptor: .. code-block:: python class MyCustomCloudRedisClusterInterceptor(CloudRedisClusterRestInterceptor): + def pre_add_auth_token(self, request, metadata): + logging.log(f"Received request: {request}") + return request, metadata + + def post_add_auth_token(self, response): + logging.log(f"Received response: {response}") + return response + + def pre_add_token_auth_user(self, request, metadata): + logging.log(f"Received request: {request}") + return request, metadata + + def post_add_token_auth_user(self, response): + logging.log(f"Received response: {response}") + return response + def pre_backup_cluster(self, request, metadata): logging.log(f"Received request: {request}") return request, metadata @@ -106,6 +122,14 @@ def post_delete_acl_policy(self, response): logging.log(f"Received response: {response}") return response + def pre_delete_auth_token(self, request, metadata): + logging.log(f"Received request: {request}") + return request, metadata + + def post_delete_auth_token(self, response): + logging.log(f"Received response: {response}") + return response + def pre_delete_backup(self, request, metadata): logging.log(f"Received request: {request}") return request, metadata @@ -122,6 +146,14 @@ def post_delete_cluster(self, response): logging.log(f"Received response: {response}") return response + def pre_delete_token_auth_user(self, request, metadata): + logging.log(f"Received request: {request}") + return request, metadata + + def post_delete_token_auth_user(self, response): + logging.log(f"Received response: {response}") + return response + def pre_export_backup(self, request, metadata): logging.log(f"Received request: {request}") return request, metadata @@ -146,6 +178,14 @@ def post_get_acl_policy_revision(self, response): logging.log(f"Received response: {response}") return response + def pre_get_auth_token(self, request, metadata): + logging.log(f"Received request: {request}") + return request, metadata + + def post_get_auth_token(self, response): + logging.log(f"Received response: {response}") + return response + def pre_get_backup(self, request, metadata): logging.log(f"Received request: {request}") return request, metadata @@ -186,6 +226,14 @@ def post_get_shared_regional_certificate_authority(self, response): logging.log(f"Received response: {response}") return response + def pre_get_token_auth_user(self, request, metadata): + logging.log(f"Received request: {request}") + return request, metadata + + def post_get_token_auth_user(self, response): + logging.log(f"Received response: {response}") + return response + def pre_list_acl_policies(self, request, metadata): logging.log(f"Received request: {request}") return request, metadata @@ -202,6 +250,14 @@ def post_list_acl_policy_revisions(self, response): logging.log(f"Received response: {response}") return response + def pre_list_auth_tokens(self, request, metadata): + logging.log(f"Received request: {request}") + return request, metadata + + def post_list_auth_tokens(self, response): + logging.log(f"Received response: {response}") + return response + def pre_list_backup_collections(self, request, metadata): logging.log(f"Received request: {request}") return request, metadata @@ -226,6 +282,14 @@ def post_list_clusters(self, response): logging.log(f"Received response: {response}") return response + def pre_list_token_auth_users(self, request, metadata): + logging.log(f"Received request: {request}") + return request, metadata + + def post_list_token_auth_users(self, response): + logging.log(f"Received response: {response}") + return response + def pre_reschedule_cluster_maintenance(self, request, metadata): logging.log(f"Received request: {request}") return request, metadata @@ -256,6 +320,103 @@ def post_update_cluster(self, response): """ + def pre_add_auth_token( + self, + request: cloud_redis_cluster.AddAuthTokenRequest, + metadata: Sequence[Tuple[str, Union[str, bytes]]], + ) -> Tuple[ + cloud_redis_cluster.AddAuthTokenRequest, Sequence[Tuple[str, Union[str, bytes]]] + ]: + """Pre-rpc interceptor for add_auth_token + + Override in a subclass to manipulate the request or metadata + before they are sent to the CloudRedisCluster server. + """ + return request, metadata + + def post_add_auth_token( + self, response: operations_pb2.Operation + ) -> operations_pb2.Operation: + """Post-rpc interceptor for add_auth_token + + DEPRECATED. Please use the `post_add_auth_token_with_metadata` + interceptor instead. + + Override in a subclass to read or manipulate the response + after it is returned by the CloudRedisCluster server but before + it is returned to user code. This `post_add_auth_token` interceptor runs + before the `post_add_auth_token_with_metadata` interceptor. + """ + return response + + def post_add_auth_token_with_metadata( + self, + response: operations_pb2.Operation, + metadata: Sequence[Tuple[str, Union[str, bytes]]], + ) -> Tuple[operations_pb2.Operation, Sequence[Tuple[str, Union[str, bytes]]]]: + """Post-rpc interceptor for add_auth_token + + Override in a subclass to read or manipulate the response or metadata after it + is returned by the CloudRedisCluster server but before it is returned to user code. + + We recommend only using this `post_add_auth_token_with_metadata` + interceptor in new development instead of the `post_add_auth_token` interceptor. + When both interceptors are used, this `post_add_auth_token_with_metadata` interceptor runs after the + `post_add_auth_token` interceptor. The (possibly modified) response returned by + `post_add_auth_token` will be passed to + `post_add_auth_token_with_metadata`. + """ + return response, metadata + + def pre_add_token_auth_user( + self, + request: cloud_redis_cluster.AddTokenAuthUserRequest, + metadata: Sequence[Tuple[str, Union[str, bytes]]], + ) -> Tuple[ + cloud_redis_cluster.AddTokenAuthUserRequest, + Sequence[Tuple[str, Union[str, bytes]]], + ]: + """Pre-rpc interceptor for add_token_auth_user + + Override in a subclass to manipulate the request or metadata + before they are sent to the CloudRedisCluster server. + """ + return request, metadata + + def post_add_token_auth_user( + self, response: operations_pb2.Operation + ) -> operations_pb2.Operation: + """Post-rpc interceptor for add_token_auth_user + + DEPRECATED. Please use the `post_add_token_auth_user_with_metadata` + interceptor instead. + + Override in a subclass to read or manipulate the response + after it is returned by the CloudRedisCluster server but before + it is returned to user code. This `post_add_token_auth_user` interceptor runs + before the `post_add_token_auth_user_with_metadata` interceptor. + """ + return response + + def post_add_token_auth_user_with_metadata( + self, + response: operations_pb2.Operation, + metadata: Sequence[Tuple[str, Union[str, bytes]]], + ) -> Tuple[operations_pb2.Operation, Sequence[Tuple[str, Union[str, bytes]]]]: + """Post-rpc interceptor for add_token_auth_user + + Override in a subclass to read or manipulate the response or metadata after it + is returned by the CloudRedisCluster server but before it is returned to user code. + + We recommend only using this `post_add_token_auth_user_with_metadata` + interceptor in new development instead of the `post_add_token_auth_user` interceptor. + When both interceptors are used, this `post_add_token_auth_user_with_metadata` interceptor runs after the + `post_add_token_auth_user` interceptor. The (possibly modified) response returned by + `post_add_token_auth_user` will be passed to + `post_add_token_auth_user_with_metadata`. + """ + return response, metadata + def pre_backup_cluster( self, request: cloud_redis_cluster.BackupClusterRequest, @@ -452,6 +613,55 @@ def post_delete_acl_policy_with_metadata( """ return response, metadata + def pre_delete_auth_token( + self, + request: cloud_redis_cluster.DeleteAuthTokenRequest, + metadata: Sequence[Tuple[str, Union[str, bytes]]], + ) -> Tuple[ + cloud_redis_cluster.DeleteAuthTokenRequest, + Sequence[Tuple[str, Union[str, bytes]]], + ]: + """Pre-rpc interceptor for delete_auth_token + + Override in a subclass to manipulate the request or metadata + before they are sent to the CloudRedisCluster server. + """ + return request, metadata + + def post_delete_auth_token( + self, response: operations_pb2.Operation + ) -> operations_pb2.Operation: + """Post-rpc interceptor for delete_auth_token + + DEPRECATED. Please use the `post_delete_auth_token_with_metadata` + interceptor instead. + + Override in a subclass to read or manipulate the response + after it is returned by the CloudRedisCluster server but before + it is returned to user code. This `post_delete_auth_token` interceptor runs + before the `post_delete_auth_token_with_metadata` interceptor. + """ + return response + + def post_delete_auth_token_with_metadata( + self, + response: operations_pb2.Operation, + metadata: Sequence[Tuple[str, Union[str, bytes]]], + ) -> Tuple[operations_pb2.Operation, Sequence[Tuple[str, Union[str, bytes]]]]: + """Post-rpc interceptor for delete_auth_token + + Override in a subclass to read or manipulate the response or metadata after it + is returned by the CloudRedisCluster server but before it is returned to user code. + + We recommend only using this `post_delete_auth_token_with_metadata` + interceptor in new development instead of the `post_delete_auth_token` interceptor. + When both interceptors are used, this `post_delete_auth_token_with_metadata` interceptor runs after the + `post_delete_auth_token` interceptor. The (possibly modified) response returned by + `post_delete_auth_token` will be passed to + `post_delete_auth_token_with_metadata`. + """ + return response, metadata + def pre_delete_backup( self, request: cloud_redis_cluster.DeleteBackupRequest, @@ -549,6 +759,55 @@ def post_delete_cluster_with_metadata( """ return response, metadata + def pre_delete_token_auth_user( + self, + request: cloud_redis_cluster.DeleteTokenAuthUserRequest, + metadata: Sequence[Tuple[str, Union[str, bytes]]], + ) -> Tuple[ + cloud_redis_cluster.DeleteTokenAuthUserRequest, + Sequence[Tuple[str, Union[str, bytes]]], + ]: + """Pre-rpc interceptor for delete_token_auth_user + + Override in a subclass to manipulate the request or metadata + before they are sent to the CloudRedisCluster server. + """ + return request, metadata + + def post_delete_token_auth_user( + self, response: operations_pb2.Operation + ) -> operations_pb2.Operation: + """Post-rpc interceptor for delete_token_auth_user + + DEPRECATED. Please use the `post_delete_token_auth_user_with_metadata` + interceptor instead. + + Override in a subclass to read or manipulate the response + after it is returned by the CloudRedisCluster server but before + it is returned to user code. This `post_delete_token_auth_user` interceptor runs + before the `post_delete_token_auth_user_with_metadata` interceptor. + """ + return response + + def post_delete_token_auth_user_with_metadata( + self, + response: operations_pb2.Operation, + metadata: Sequence[Tuple[str, Union[str, bytes]]], + ) -> Tuple[operations_pb2.Operation, Sequence[Tuple[str, Union[str, bytes]]]]: + """Post-rpc interceptor for delete_token_auth_user + + Override in a subclass to read or manipulate the response or metadata after it + is returned by the CloudRedisCluster server but before it is returned to user code. + + We recommend only using this `post_delete_token_auth_user_with_metadata` + interceptor in new development instead of the `post_delete_token_auth_user` interceptor. + When both interceptors are used, this `post_delete_token_auth_user_with_metadata` interceptor runs after the + `post_delete_token_auth_user` interceptor. The (possibly modified) response returned by + `post_delete_token_auth_user` will be passed to + `post_delete_token_auth_user_with_metadata`. + """ + return response, metadata + def pre_export_backup( self, request: cloud_redis_cluster.ExportBackupRequest, @@ -696,6 +955,54 @@ def post_get_acl_policy_revision_with_metadata( """ return response, metadata + def pre_get_auth_token( + self, + request: cloud_redis_cluster.GetAuthTokenRequest, + metadata: Sequence[Tuple[str, Union[str, bytes]]], + ) -> Tuple[ + cloud_redis_cluster.GetAuthTokenRequest, Sequence[Tuple[str, Union[str, bytes]]] + ]: + """Pre-rpc interceptor for get_auth_token + + Override in a subclass to manipulate the request or metadata + before they are sent to the CloudRedisCluster server. + """ + return request, metadata + + def post_get_auth_token( + self, response: cloud_redis_cluster.AuthToken + ) -> cloud_redis_cluster.AuthToken: + """Post-rpc interceptor for get_auth_token + + DEPRECATED. Please use the `post_get_auth_token_with_metadata` + interceptor instead. + + Override in a subclass to read or manipulate the response + after it is returned by the CloudRedisCluster server but before + it is returned to user code. This `post_get_auth_token` interceptor runs + before the `post_get_auth_token_with_metadata` interceptor. + """ + return response + + def post_get_auth_token_with_metadata( + self, + response: cloud_redis_cluster.AuthToken, + metadata: Sequence[Tuple[str, Union[str, bytes]]], + ) -> Tuple[cloud_redis_cluster.AuthToken, Sequence[Tuple[str, Union[str, bytes]]]]: + """Post-rpc interceptor for get_auth_token + + Override in a subclass to read or manipulate the response or metadata after it + is returned by the CloudRedisCluster server but before it is returned to user code. + + We recommend only using this `post_get_auth_token_with_metadata` + interceptor in new development instead of the `post_get_auth_token` interceptor. + When both interceptors are used, this `post_get_auth_token_with_metadata` interceptor runs after the + `post_get_auth_token` interceptor. The (possibly modified) response returned by + `post_get_auth_token` will be passed to + `post_get_auth_token_with_metadata`. + """ + return response, metadata + def pre_get_backup( self, request: cloud_redis_cluster.GetBackupRequest, @@ -947,6 +1254,57 @@ def post_get_shared_regional_certificate_authority_with_metadata( """ return response, metadata + def pre_get_token_auth_user( + self, + request: cloud_redis_cluster.GetTokenAuthUserRequest, + metadata: Sequence[Tuple[str, Union[str, bytes]]], + ) -> Tuple[ + cloud_redis_cluster.GetTokenAuthUserRequest, + Sequence[Tuple[str, Union[str, bytes]]], + ]: + """Pre-rpc interceptor for get_token_auth_user + + Override in a subclass to manipulate the request or metadata + before they are sent to the CloudRedisCluster server. + """ + return request, metadata + + def post_get_token_auth_user( + self, response: cloud_redis_cluster.TokenAuthUser + ) -> cloud_redis_cluster.TokenAuthUser: + """Post-rpc interceptor for get_token_auth_user + + DEPRECATED. Please use the `post_get_token_auth_user_with_metadata` + interceptor instead. + + Override in a subclass to read or manipulate the response + after it is returned by the CloudRedisCluster server but before + it is returned to user code. This `post_get_token_auth_user` interceptor runs + before the `post_get_token_auth_user_with_metadata` interceptor. + """ + return response + + def post_get_token_auth_user_with_metadata( + self, + response: cloud_redis_cluster.TokenAuthUser, + metadata: Sequence[Tuple[str, Union[str, bytes]]], + ) -> Tuple[ + cloud_redis_cluster.TokenAuthUser, Sequence[Tuple[str, Union[str, bytes]]] + ]: + """Post-rpc interceptor for get_token_auth_user + + Override in a subclass to read or manipulate the response or metadata after it + is returned by the CloudRedisCluster server but before it is returned to user code. + + We recommend only using this `post_get_token_auth_user_with_metadata` + interceptor in new development instead of the `post_get_token_auth_user` interceptor. + When both interceptors are used, this `post_get_token_auth_user_with_metadata` interceptor runs after the + `post_get_token_auth_user` interceptor. The (possibly modified) response returned by + `post_get_token_auth_user` will be passed to + `post_get_token_auth_user_with_metadata`. + """ + return response, metadata + def pre_list_acl_policies( self, request: cloud_redis_cluster.ListAclPoliciesRequest, @@ -1051,61 +1409,113 @@ def post_list_acl_policy_revisions_with_metadata( """ return response, metadata - def pre_list_backup_collections( + def pre_list_auth_tokens( self, - request: cloud_redis_cluster.ListBackupCollectionsRequest, + request: cloud_redis_cluster.ListAuthTokensRequest, metadata: Sequence[Tuple[str, Union[str, bytes]]], ) -> Tuple[ - cloud_redis_cluster.ListBackupCollectionsRequest, + cloud_redis_cluster.ListAuthTokensRequest, Sequence[Tuple[str, Union[str, bytes]]], ]: - """Pre-rpc interceptor for list_backup_collections + """Pre-rpc interceptor for list_auth_tokens Override in a subclass to manipulate the request or metadata before they are sent to the CloudRedisCluster server. """ return request, metadata - def post_list_backup_collections( - self, response: cloud_redis_cluster.ListBackupCollectionsResponse - ) -> cloud_redis_cluster.ListBackupCollectionsResponse: - """Post-rpc interceptor for list_backup_collections + def post_list_auth_tokens( + self, response: cloud_redis_cluster.ListAuthTokensResponse + ) -> cloud_redis_cluster.ListAuthTokensResponse: + """Post-rpc interceptor for list_auth_tokens - DEPRECATED. Please use the `post_list_backup_collections_with_metadata` + DEPRECATED. Please use the `post_list_auth_tokens_with_metadata` interceptor instead. Override in a subclass to read or manipulate the response after it is returned by the CloudRedisCluster server but before - it is returned to user code. This `post_list_backup_collections` interceptor runs - before the `post_list_backup_collections_with_metadata` interceptor. + it is returned to user code. This `post_list_auth_tokens` interceptor runs + before the `post_list_auth_tokens_with_metadata` interceptor. """ return response - def post_list_backup_collections_with_metadata( + def post_list_auth_tokens_with_metadata( self, - response: cloud_redis_cluster.ListBackupCollectionsResponse, + response: cloud_redis_cluster.ListAuthTokensResponse, metadata: Sequence[Tuple[str, Union[str, bytes]]], ) -> Tuple[ - cloud_redis_cluster.ListBackupCollectionsResponse, + cloud_redis_cluster.ListAuthTokensResponse, Sequence[Tuple[str, Union[str, bytes]]], ]: - """Post-rpc interceptor for list_backup_collections + """Post-rpc interceptor for list_auth_tokens Override in a subclass to read or manipulate the response or metadata after it is returned by the CloudRedisCluster server but before it is returned to user code. - We recommend only using this `post_list_backup_collections_with_metadata` - interceptor in new development instead of the `post_list_backup_collections` interceptor. - When both interceptors are used, this `post_list_backup_collections_with_metadata` interceptor runs after the - `post_list_backup_collections` interceptor. The (possibly modified) response returned by - `post_list_backup_collections` will be passed to - `post_list_backup_collections_with_metadata`. + We recommend only using this `post_list_auth_tokens_with_metadata` + interceptor in new development instead of the `post_list_auth_tokens` interceptor. + When both interceptors are used, this `post_list_auth_tokens_with_metadata` interceptor runs after the + `post_list_auth_tokens` interceptor. The (possibly modified) response returned by + `post_list_auth_tokens` will be passed to + `post_list_auth_tokens_with_metadata`. """ return response, metadata - def pre_list_backups( + def pre_list_backup_collections( self, - request: cloud_redis_cluster.ListBackupsRequest, + request: cloud_redis_cluster.ListBackupCollectionsRequest, + metadata: Sequence[Tuple[str, Union[str, bytes]]], + ) -> Tuple[ + cloud_redis_cluster.ListBackupCollectionsRequest, + Sequence[Tuple[str, Union[str, bytes]]], + ]: + """Pre-rpc interceptor for list_backup_collections + + Override in a subclass to manipulate the request or metadata + before they are sent to the CloudRedisCluster server. + """ + return request, metadata + + def post_list_backup_collections( + self, response: cloud_redis_cluster.ListBackupCollectionsResponse + ) -> cloud_redis_cluster.ListBackupCollectionsResponse: + """Post-rpc interceptor for list_backup_collections + + DEPRECATED. Please use the `post_list_backup_collections_with_metadata` + interceptor instead. + + Override in a subclass to read or manipulate the response + after it is returned by the CloudRedisCluster server but before + it is returned to user code. This `post_list_backup_collections` interceptor runs + before the `post_list_backup_collections_with_metadata` interceptor. + """ + return response + + def post_list_backup_collections_with_metadata( + self, + response: cloud_redis_cluster.ListBackupCollectionsResponse, + metadata: Sequence[Tuple[str, Union[str, bytes]]], + ) -> Tuple[ + cloud_redis_cluster.ListBackupCollectionsResponse, + Sequence[Tuple[str, Union[str, bytes]]], + ]: + """Post-rpc interceptor for list_backup_collections + + Override in a subclass to read or manipulate the response or metadata after it + is returned by the CloudRedisCluster server but before it is returned to user code. + + We recommend only using this `post_list_backup_collections_with_metadata` + interceptor in new development instead of the `post_list_backup_collections` interceptor. + When both interceptors are used, this `post_list_backup_collections_with_metadata` interceptor runs after the + `post_list_backup_collections` interceptor. The (possibly modified) response returned by + `post_list_backup_collections` will be passed to + `post_list_backup_collections_with_metadata`. + """ + return response, metadata + + def pre_list_backups( + self, + request: cloud_redis_cluster.ListBackupsRequest, metadata: Sequence[Tuple[str, Union[str, bytes]]], ) -> Tuple[ cloud_redis_cluster.ListBackupsRequest, Sequence[Tuple[str, Union[str, bytes]]] @@ -1204,6 +1614,58 @@ def post_list_clusters_with_metadata( """ return response, metadata + def pre_list_token_auth_users( + self, + request: cloud_redis_cluster.ListTokenAuthUsersRequest, + metadata: Sequence[Tuple[str, Union[str, bytes]]], + ) -> Tuple[ + cloud_redis_cluster.ListTokenAuthUsersRequest, + Sequence[Tuple[str, Union[str, bytes]]], + ]: + """Pre-rpc interceptor for list_token_auth_users + + Override in a subclass to manipulate the request or metadata + before they are sent to the CloudRedisCluster server. + """ + return request, metadata + + def post_list_token_auth_users( + self, response: cloud_redis_cluster.ListTokenAuthUsersResponse + ) -> cloud_redis_cluster.ListTokenAuthUsersResponse: + """Post-rpc interceptor for list_token_auth_users + + DEPRECATED. Please use the `post_list_token_auth_users_with_metadata` + interceptor instead. + + Override in a subclass to read or manipulate the response + after it is returned by the CloudRedisCluster server but before + it is returned to user code. This `post_list_token_auth_users` interceptor runs + before the `post_list_token_auth_users_with_metadata` interceptor. + """ + return response + + def post_list_token_auth_users_with_metadata( + self, + response: cloud_redis_cluster.ListTokenAuthUsersResponse, + metadata: Sequence[Tuple[str, Union[str, bytes]]], + ) -> Tuple[ + cloud_redis_cluster.ListTokenAuthUsersResponse, + Sequence[Tuple[str, Union[str, bytes]]], + ]: + """Post-rpc interceptor for list_token_auth_users + + Override in a subclass to read or manipulate the response or metadata after it + is returned by the CloudRedisCluster server but before it is returned to user code. + + We recommend only using this `post_list_token_auth_users_with_metadata` + interceptor in new development instead of the `post_list_token_auth_users` interceptor. + When both interceptors are used, this `post_list_token_auth_users_with_metadata` interceptor runs after the + `post_list_token_auth_users` interceptor. The (possibly modified) response returned by + `post_list_token_auth_users` will be passed to + `post_list_token_auth_users_with_metadata`. + """ + return response, metadata + def pre_reschedule_cluster_maintenance( self, request: cloud_redis_cluster.RescheduleClusterMaintenanceRequest, @@ -1663,12 +2125,11 @@ def operations_client(self) -> operations_v1.AbstractOperationsClient: # Return the client from cache. return self._operations_client - class _BackupCluster( - _BaseCloudRedisClusterRestTransport._BaseBackupCluster, - CloudRedisClusterRestStub, + class _AddAuthToken( + _BaseCloudRedisClusterRestTransport._BaseAddAuthToken, CloudRedisClusterRestStub ): def __hash__(self): - return hash("CloudRedisClusterRestTransport.BackupCluster") + return hash("CloudRedisClusterRestTransport.AddAuthToken") @staticmethod def _get_response( @@ -1695,17 +2156,17 @@ def _get_response( def __call__( self, - request: cloud_redis_cluster.BackupClusterRequest, + request: cloud_redis_cluster.AddAuthTokenRequest, *, retry: OptionalRetry = gapic_v1.method.DEFAULT, timeout: Optional[float] = None, metadata: Sequence[Tuple[str, Union[str, bytes]]] = (), ) -> operations_pb2.Operation: - r"""Call the backup cluster method over HTTP. + r"""Call the add auth token method over HTTP. Args: - request (~.cloud_redis_cluster.BackupClusterRequest): - The request object. Request for [BackupCluster]. + request (~.cloud_redis_cluster.AddAuthTokenRequest): + The request object. Request message for [AddAuthToken][]. retry (google.api_core.retry.Retry): Designation of what errors, if any, should be retried. timeout (float): The timeout for this request. @@ -1722,14 +2183,14 @@ def __call__( """ - http_options = _BaseCloudRedisClusterRestTransport._BaseBackupCluster._get_http_options() - request, metadata = self._interceptor.pre_backup_cluster(request, metadata) + http_options = _BaseCloudRedisClusterRestTransport._BaseAddAuthToken._get_http_options() + request, metadata = self._interceptor.pre_add_auth_token(request, metadata) transcoded_request, body, query_params = transcode_request( http_options, request, required_fields_default_values=getattr( - _BaseCloudRedisClusterRestTransport._BaseBackupCluster, - "_BaseBackupCluster__REQUIRED_FIELDS_DEFAULT_VALUES", + _BaseCloudRedisClusterRestTransport._BaseAddAuthToken, + "_BaseAddAuthToken__REQUIRED_FIELDS_DEFAULT_VALUES", None, ), rest_numeric_enums=True, @@ -1753,17 +2214,17 @@ def __call__( "headers": dict(metadata), } _LOGGER.debug( - f"Sending request for google.cloud.redis.cluster_v1beta1.CloudRedisClusterClient.BackupCluster", + f"Sending request for google.cloud.redis.cluster_v1beta1.CloudRedisClusterClient.AddAuthToken", extra={ "serviceName": "google.cloud.redis.cluster.v1beta1.CloudRedisCluster", - "rpcName": "BackupCluster", + "rpcName": "AddAuthToken", "httpRequest": http_request, "metadata": http_request["headers"], }, ) # Send the request - response = CloudRedisClusterRestTransport._BackupCluster._get_response( + response = CloudRedisClusterRestTransport._AddAuthToken._get_response( self._host, metadata, query_params, @@ -1782,9 +2243,9 @@ def __call__( resp = operations_pb2.Operation() json_format.Parse(response.content, resp, ignore_unknown_fields=True) - resp = self._interceptor.post_backup_cluster(resp) + resp = self._interceptor.post_add_auth_token(resp) response_metadata = [(k, str(v)) for k, v in response.headers.items()] - resp, _ = self._interceptor.post_backup_cluster_with_metadata( + resp, _ = self._interceptor.post_add_auth_token_with_metadata( resp, response_metadata ) if CLIENT_LOGGING_SUPPORTED and _LOGGER.isEnabledFor( @@ -1800,22 +2261,22 @@ def __call__( "status": response.status_code, } _LOGGER.debug( - "Received response for google.cloud.redis.cluster_v1beta1.CloudRedisClusterClient.backup_cluster", + "Received response for google.cloud.redis.cluster_v1beta1.CloudRedisClusterClient.add_auth_token", extra={ "serviceName": "google.cloud.redis.cluster.v1beta1.CloudRedisCluster", - "rpcName": "BackupCluster", + "rpcName": "AddAuthToken", "metadata": http_response["headers"], "httpResponse": http_response, }, ) return resp - class _CreateAclPolicy( - _BaseCloudRedisClusterRestTransport._BaseCreateAclPolicy, + class _AddTokenAuthUser( + _BaseCloudRedisClusterRestTransport._BaseAddTokenAuthUser, CloudRedisClusterRestStub, ): def __hash__(self): - return hash("CloudRedisClusterRestTransport.CreateAclPolicy") + return hash("CloudRedisClusterRestTransport.AddTokenAuthUser") @staticmethod def _get_response( @@ -1842,17 +2303,17 @@ def _get_response( def __call__( self, - request: cloud_redis_cluster.CreateAclPolicyRequest, + request: cloud_redis_cluster.AddTokenAuthUserRequest, *, retry: OptionalRetry = gapic_v1.method.DEFAULT, timeout: Optional[float] = None, metadata: Sequence[Tuple[str, Union[str, bytes]]] = (), - ) -> cloud_redis_cluster.AclPolicy: - r"""Call the create acl policy method over HTTP. + ) -> operations_pb2.Operation: + r"""Call the add token auth user method over HTTP. Args: - request (~.cloud_redis_cluster.CreateAclPolicyRequest): - The request object. Request for ``CreateAclPolicy``. + request (~.cloud_redis_cluster.AddTokenAuthUserRequest): + The request object. Request message for [AddTokenAuthUser][]. retry (google.api_core.retry.Retry): Designation of what errors, if any, should be retried. timeout (float): The timeout for this request. @@ -1862,20 +2323,23 @@ def __call__( be of type `bytes`. Returns: - ~.cloud_redis_cluster.AclPolicy: - The ACL policy resource. + ~.operations_pb2.Operation: + This resource represents a + long-running operation that is the + result of a network API call. + """ - http_options = _BaseCloudRedisClusterRestTransport._BaseCreateAclPolicy._get_http_options() - request, metadata = self._interceptor.pre_create_acl_policy( + http_options = _BaseCloudRedisClusterRestTransport._BaseAddTokenAuthUser._get_http_options() + request, metadata = self._interceptor.pre_add_token_auth_user( request, metadata ) transcoded_request, body, query_params = transcode_request( http_options, request, required_fields_default_values=getattr( - _BaseCloudRedisClusterRestTransport._BaseCreateAclPolicy, - "_BaseCreateAclPolicy__REQUIRED_FIELDS_DEFAULT_VALUES", + _BaseCloudRedisClusterRestTransport._BaseAddTokenAuthUser, + "_BaseAddTokenAuthUser__REQUIRED_FIELDS_DEFAULT_VALUES", None, ), rest_numeric_enums=True, @@ -1899,17 +2363,17 @@ def __call__( "headers": dict(metadata), } _LOGGER.debug( - f"Sending request for google.cloud.redis.cluster_v1beta1.CloudRedisClusterClient.CreateAclPolicy", + f"Sending request for google.cloud.redis.cluster_v1beta1.CloudRedisClusterClient.AddTokenAuthUser", extra={ "serviceName": "google.cloud.redis.cluster.v1beta1.CloudRedisCluster", - "rpcName": "CreateAclPolicy", + "rpcName": "AddTokenAuthUser", "httpRequest": http_request, "metadata": http_request["headers"], }, ) # Send the request - response = CloudRedisClusterRestTransport._CreateAclPolicy._get_response( + response = CloudRedisClusterRestTransport._AddTokenAuthUser._get_response( self._host, metadata, query_params, @@ -1925,21 +2389,19 @@ def __call__( raise core_exceptions.from_http_response(response) # Return the response - resp = cloud_redis_cluster.AclPolicy() - pb_resp = cloud_redis_cluster.AclPolicy.pb(resp) - - json_format.Parse(response.content, pb_resp, ignore_unknown_fields=True) + resp = operations_pb2.Operation() + json_format.Parse(response.content, resp, ignore_unknown_fields=True) - resp = self._interceptor.post_create_acl_policy(resp) + resp = self._interceptor.post_add_token_auth_user(resp) response_metadata = [(k, str(v)) for k, v in response.headers.items()] - resp, _ = self._interceptor.post_create_acl_policy_with_metadata( + resp, _ = self._interceptor.post_add_token_auth_user_with_metadata( resp, response_metadata ) if CLIENT_LOGGING_SUPPORTED and _LOGGER.isEnabledFor( logging.DEBUG ): # pragma: NO COVER try: - response_payload = cloud_redis_cluster.AclPolicy.to_json(response) + response_payload = json_format.MessageToJson(resp) except: response_payload = None http_response = { @@ -1948,22 +2410,22 @@ def __call__( "status": response.status_code, } _LOGGER.debug( - "Received response for google.cloud.redis.cluster_v1beta1.CloudRedisClusterClient.create_acl_policy", + "Received response for google.cloud.redis.cluster_v1beta1.CloudRedisClusterClient.add_token_auth_user", extra={ "serviceName": "google.cloud.redis.cluster.v1beta1.CloudRedisCluster", - "rpcName": "CreateAclPolicy", + "rpcName": "AddTokenAuthUser", "metadata": http_response["headers"], "httpResponse": http_response, }, ) return resp - class _CreateCluster( - _BaseCloudRedisClusterRestTransport._BaseCreateCluster, + class _BackupCluster( + _BaseCloudRedisClusterRestTransport._BaseBackupCluster, CloudRedisClusterRestStub, ): def __hash__(self): - return hash("CloudRedisClusterRestTransport.CreateCluster") + return hash("CloudRedisClusterRestTransport.BackupCluster") @staticmethod def _get_response( @@ -1990,17 +2452,17 @@ def _get_response( def __call__( self, - request: cloud_redis_cluster.CreateClusterRequest, + request: cloud_redis_cluster.BackupClusterRequest, *, retry: OptionalRetry = gapic_v1.method.DEFAULT, timeout: Optional[float] = None, metadata: Sequence[Tuple[str, Union[str, bytes]]] = (), ) -> operations_pb2.Operation: - r"""Call the create cluster method over HTTP. + r"""Call the backup cluster method over HTTP. Args: - request (~.cloud_redis_cluster.CreateClusterRequest): - The request object. Request for [CreateCluster][CloudRedis.CreateCluster]. + request (~.cloud_redis_cluster.BackupClusterRequest): + The request object. Request for [BackupCluster]. retry (google.api_core.retry.Retry): Designation of what errors, if any, should be retried. timeout (float): The timeout for this request. @@ -2017,14 +2479,14 @@ def __call__( """ - http_options = _BaseCloudRedisClusterRestTransport._BaseCreateCluster._get_http_options() - request, metadata = self._interceptor.pre_create_cluster(request, metadata) + http_options = _BaseCloudRedisClusterRestTransport._BaseBackupCluster._get_http_options() + request, metadata = self._interceptor.pre_backup_cluster(request, metadata) transcoded_request, body, query_params = transcode_request( http_options, request, required_fields_default_values=getattr( - _BaseCloudRedisClusterRestTransport._BaseCreateCluster, - "_BaseCreateCluster__REQUIRED_FIELDS_DEFAULT_VALUES", + _BaseCloudRedisClusterRestTransport._BaseBackupCluster, + "_BaseBackupCluster__REQUIRED_FIELDS_DEFAULT_VALUES", None, ), rest_numeric_enums=True, @@ -2048,17 +2510,17 @@ def __call__( "headers": dict(metadata), } _LOGGER.debug( - f"Sending request for google.cloud.redis.cluster_v1beta1.CloudRedisClusterClient.CreateCluster", + f"Sending request for google.cloud.redis.cluster_v1beta1.CloudRedisClusterClient.BackupCluster", extra={ "serviceName": "google.cloud.redis.cluster.v1beta1.CloudRedisCluster", - "rpcName": "CreateCluster", + "rpcName": "BackupCluster", "httpRequest": http_request, "metadata": http_request["headers"], }, ) # Send the request - response = CloudRedisClusterRestTransport._CreateCluster._get_response( + response = CloudRedisClusterRestTransport._BackupCluster._get_response( self._host, metadata, query_params, @@ -2077,9 +2539,9 @@ def __call__( resp = operations_pb2.Operation() json_format.Parse(response.content, resp, ignore_unknown_fields=True) - resp = self._interceptor.post_create_cluster(resp) + resp = self._interceptor.post_backup_cluster(resp) response_metadata = [(k, str(v)) for k, v in response.headers.items()] - resp, _ = self._interceptor.post_create_cluster_with_metadata( + resp, _ = self._interceptor.post_backup_cluster_with_metadata( resp, response_metadata ) if CLIENT_LOGGING_SUPPORTED and _LOGGER.isEnabledFor( @@ -2095,22 +2557,22 @@ def __call__( "status": response.status_code, } _LOGGER.debug( - "Received response for google.cloud.redis.cluster_v1beta1.CloudRedisClusterClient.create_cluster", + "Received response for google.cloud.redis.cluster_v1beta1.CloudRedisClusterClient.backup_cluster", extra={ "serviceName": "google.cloud.redis.cluster.v1beta1.CloudRedisCluster", - "rpcName": "CreateCluster", + "rpcName": "BackupCluster", "metadata": http_response["headers"], "httpResponse": http_response, }, ) return resp - class _DeleteAclPolicy( - _BaseCloudRedisClusterRestTransport._BaseDeleteAclPolicy, + class _CreateAclPolicy( + _BaseCloudRedisClusterRestTransport._BaseCreateAclPolicy, CloudRedisClusterRestStub, ): def __hash__(self): - return hash("CloudRedisClusterRestTransport.DeleteAclPolicy") + return hash("CloudRedisClusterRestTransport.CreateAclPolicy") @staticmethod def _get_response( @@ -2131,22 +2593,23 @@ def _get_response( timeout=timeout, headers=headers, params=rest_helpers.flatten_query_params(query_params, strict=True), + data=body, ) return response def __call__( self, - request: cloud_redis_cluster.DeleteAclPolicyRequest, + request: cloud_redis_cluster.CreateAclPolicyRequest, *, retry: OptionalRetry = gapic_v1.method.DEFAULT, timeout: Optional[float] = None, metadata: Sequence[Tuple[str, Union[str, bytes]]] = (), - ) -> operations_pb2.Operation: - r"""Call the delete acl policy method over HTTP. + ) -> cloud_redis_cluster.AclPolicy: + r"""Call the create acl policy method over HTTP. Args: - request (~.cloud_redis_cluster.DeleteAclPolicyRequest): - The request object. Request for ``DeleteAclPolicy``. + request (~.cloud_redis_cluster.CreateAclPolicyRequest): + The request object. Request for ``CreateAclPolicy``. retry (google.api_core.retry.Retry): Designation of what errors, if any, should be retried. timeout (float): The timeout for this request. @@ -2156,23 +2619,20 @@ def __call__( be of type `bytes`. Returns: - ~.operations_pb2.Operation: - This resource represents a - long-running operation that is the - result of a network API call. - + ~.cloud_redis_cluster.AclPolicy: + The ACL policy resource. """ - http_options = _BaseCloudRedisClusterRestTransport._BaseDeleteAclPolicy._get_http_options() - request, metadata = self._interceptor.pre_delete_acl_policy( + http_options = _BaseCloudRedisClusterRestTransport._BaseCreateAclPolicy._get_http_options() + request, metadata = self._interceptor.pre_create_acl_policy( request, metadata ) transcoded_request, body, query_params = transcode_request( http_options, request, required_fields_default_values=getattr( - _BaseCloudRedisClusterRestTransport._BaseDeleteAclPolicy, - "_BaseDeleteAclPolicy__REQUIRED_FIELDS_DEFAULT_VALUES", + _BaseCloudRedisClusterRestTransport._BaseCreateAclPolicy, + "_BaseCreateAclPolicy__REQUIRED_FIELDS_DEFAULT_VALUES", None, ), rest_numeric_enums=True, @@ -2196,23 +2656,24 @@ def __call__( "headers": dict(metadata), } _LOGGER.debug( - f"Sending request for google.cloud.redis.cluster_v1beta1.CloudRedisClusterClient.DeleteAclPolicy", + f"Sending request for google.cloud.redis.cluster_v1beta1.CloudRedisClusterClient.CreateAclPolicy", extra={ "serviceName": "google.cloud.redis.cluster.v1beta1.CloudRedisCluster", - "rpcName": "DeleteAclPolicy", + "rpcName": "CreateAclPolicy", "httpRequest": http_request, "metadata": http_request["headers"], }, ) # Send the request - response = CloudRedisClusterRestTransport._DeleteAclPolicy._get_response( + response = CloudRedisClusterRestTransport._CreateAclPolicy._get_response( self._host, metadata, query_params, self._session, timeout, transcoded_request, + body, ) # In case of error, raise the appropriate core_exceptions.GoogleAPICallError exception @@ -2221,19 +2682,21 @@ def __call__( raise core_exceptions.from_http_response(response) # Return the response - resp = operations_pb2.Operation() - json_format.Parse(response.content, resp, ignore_unknown_fields=True) + resp = cloud_redis_cluster.AclPolicy() + pb_resp = cloud_redis_cluster.AclPolicy.pb(resp) - resp = self._interceptor.post_delete_acl_policy(resp) + json_format.Parse(response.content, pb_resp, ignore_unknown_fields=True) + + resp = self._interceptor.post_create_acl_policy(resp) response_metadata = [(k, str(v)) for k, v in response.headers.items()] - resp, _ = self._interceptor.post_delete_acl_policy_with_metadata( + resp, _ = self._interceptor.post_create_acl_policy_with_metadata( resp, response_metadata ) if CLIENT_LOGGING_SUPPORTED and _LOGGER.isEnabledFor( logging.DEBUG ): # pragma: NO COVER try: - response_payload = json_format.MessageToJson(resp) + response_payload = cloud_redis_cluster.AclPolicy.to_json(response) except: response_payload = None http_response = { @@ -2242,21 +2705,22 @@ def __call__( "status": response.status_code, } _LOGGER.debug( - "Received response for google.cloud.redis.cluster_v1beta1.CloudRedisClusterClient.delete_acl_policy", + "Received response for google.cloud.redis.cluster_v1beta1.CloudRedisClusterClient.create_acl_policy", extra={ "serviceName": "google.cloud.redis.cluster.v1beta1.CloudRedisCluster", - "rpcName": "DeleteAclPolicy", + "rpcName": "CreateAclPolicy", "metadata": http_response["headers"], "httpResponse": http_response, }, ) return resp - class _DeleteBackup( - _BaseCloudRedisClusterRestTransport._BaseDeleteBackup, CloudRedisClusterRestStub + class _CreateCluster( + _BaseCloudRedisClusterRestTransport._BaseCreateCluster, + CloudRedisClusterRestStub, ): def __hash__(self): - return hash("CloudRedisClusterRestTransport.DeleteBackup") + return hash("CloudRedisClusterRestTransport.CreateCluster") @staticmethod def _get_response( @@ -2277,22 +2741,23 @@ def _get_response( timeout=timeout, headers=headers, params=rest_helpers.flatten_query_params(query_params, strict=True), + data=body, ) return response def __call__( self, - request: cloud_redis_cluster.DeleteBackupRequest, + request: cloud_redis_cluster.CreateClusterRequest, *, retry: OptionalRetry = gapic_v1.method.DEFAULT, timeout: Optional[float] = None, metadata: Sequence[Tuple[str, Union[str, bytes]]] = (), ) -> operations_pb2.Operation: - r"""Call the delete backup method over HTTP. + r"""Call the create cluster method over HTTP. Args: - request (~.cloud_redis_cluster.DeleteBackupRequest): - The request object. Request for [DeleteBackup]. + request (~.cloud_redis_cluster.CreateClusterRequest): + The request object. Request for [CreateCluster][CloudRedis.CreateCluster]. retry (google.api_core.retry.Retry): Designation of what errors, if any, should be retried. timeout (float): The timeout for this request. @@ -2309,14 +2774,14 @@ def __call__( """ - http_options = _BaseCloudRedisClusterRestTransport._BaseDeleteBackup._get_http_options() - request, metadata = self._interceptor.pre_delete_backup(request, metadata) + http_options = _BaseCloudRedisClusterRestTransport._BaseCreateCluster._get_http_options() + request, metadata = self._interceptor.pre_create_cluster(request, metadata) transcoded_request, body, query_params = transcode_request( http_options, request, required_fields_default_values=getattr( - _BaseCloudRedisClusterRestTransport._BaseDeleteBackup, - "_BaseDeleteBackup__REQUIRED_FIELDS_DEFAULT_VALUES", + _BaseCloudRedisClusterRestTransport._BaseCreateCluster, + "_BaseCreateCluster__REQUIRED_FIELDS_DEFAULT_VALUES", None, ), rest_numeric_enums=True, @@ -2340,23 +2805,24 @@ def __call__( "headers": dict(metadata), } _LOGGER.debug( - f"Sending request for google.cloud.redis.cluster_v1beta1.CloudRedisClusterClient.DeleteBackup", + f"Sending request for google.cloud.redis.cluster_v1beta1.CloudRedisClusterClient.CreateCluster", extra={ "serviceName": "google.cloud.redis.cluster.v1beta1.CloudRedisCluster", - "rpcName": "DeleteBackup", + "rpcName": "CreateCluster", "httpRequest": http_request, "metadata": http_request["headers"], }, ) # Send the request - response = CloudRedisClusterRestTransport._DeleteBackup._get_response( + response = CloudRedisClusterRestTransport._CreateCluster._get_response( self._host, metadata, query_params, self._session, timeout, transcoded_request, + body, ) # In case of error, raise the appropriate core_exceptions.GoogleAPICallError exception @@ -2368,9 +2834,9 @@ def __call__( resp = operations_pb2.Operation() json_format.Parse(response.content, resp, ignore_unknown_fields=True) - resp = self._interceptor.post_delete_backup(resp) + resp = self._interceptor.post_create_cluster(resp) response_metadata = [(k, str(v)) for k, v in response.headers.items()] - resp, _ = self._interceptor.post_delete_backup_with_metadata( + resp, _ = self._interceptor.post_create_cluster_with_metadata( resp, response_metadata ) if CLIENT_LOGGING_SUPPORTED and _LOGGER.isEnabledFor( @@ -2386,22 +2852,22 @@ def __call__( "status": response.status_code, } _LOGGER.debug( - "Received response for google.cloud.redis.cluster_v1beta1.CloudRedisClusterClient.delete_backup", + "Received response for google.cloud.redis.cluster_v1beta1.CloudRedisClusterClient.create_cluster", extra={ "serviceName": "google.cloud.redis.cluster.v1beta1.CloudRedisCluster", - "rpcName": "DeleteBackup", + "rpcName": "CreateCluster", "metadata": http_response["headers"], "httpResponse": http_response, }, ) return resp - class _DeleteCluster( - _BaseCloudRedisClusterRestTransport._BaseDeleteCluster, + class _DeleteAclPolicy( + _BaseCloudRedisClusterRestTransport._BaseDeleteAclPolicy, CloudRedisClusterRestStub, ): def __hash__(self): - return hash("CloudRedisClusterRestTransport.DeleteCluster") + return hash("CloudRedisClusterRestTransport.DeleteAclPolicy") @staticmethod def _get_response( @@ -2427,17 +2893,17 @@ def _get_response( def __call__( self, - request: cloud_redis_cluster.DeleteClusterRequest, + request: cloud_redis_cluster.DeleteAclPolicyRequest, *, retry: OptionalRetry = gapic_v1.method.DEFAULT, timeout: Optional[float] = None, metadata: Sequence[Tuple[str, Union[str, bytes]]] = (), ) -> operations_pb2.Operation: - r"""Call the delete cluster method over HTTP. + r"""Call the delete acl policy method over HTTP. Args: - request (~.cloud_redis_cluster.DeleteClusterRequest): - The request object. Request for [DeleteCluster][CloudRedis.DeleteCluster]. + request (~.cloud_redis_cluster.DeleteAclPolicyRequest): + The request object. Request for ``DeleteAclPolicy``. retry (google.api_core.retry.Retry): Designation of what errors, if any, should be retried. timeout (float): The timeout for this request. @@ -2454,14 +2920,16 @@ def __call__( """ - http_options = _BaseCloudRedisClusterRestTransport._BaseDeleteCluster._get_http_options() - request, metadata = self._interceptor.pre_delete_cluster(request, metadata) + http_options = _BaseCloudRedisClusterRestTransport._BaseDeleteAclPolicy._get_http_options() + request, metadata = self._interceptor.pre_delete_acl_policy( + request, metadata + ) transcoded_request, body, query_params = transcode_request( http_options, request, required_fields_default_values=getattr( - _BaseCloudRedisClusterRestTransport._BaseDeleteCluster, - "_BaseDeleteCluster__REQUIRED_FIELDS_DEFAULT_VALUES", + _BaseCloudRedisClusterRestTransport._BaseDeleteAclPolicy, + "_BaseDeleteAclPolicy__REQUIRED_FIELDS_DEFAULT_VALUES", None, ), rest_numeric_enums=True, @@ -2485,17 +2953,17 @@ def __call__( "headers": dict(metadata), } _LOGGER.debug( - f"Sending request for google.cloud.redis.cluster_v1beta1.CloudRedisClusterClient.DeleteCluster", + f"Sending request for google.cloud.redis.cluster_v1beta1.CloudRedisClusterClient.DeleteAclPolicy", extra={ "serviceName": "google.cloud.redis.cluster.v1beta1.CloudRedisCluster", - "rpcName": "DeleteCluster", + "rpcName": "DeleteAclPolicy", "httpRequest": http_request, "metadata": http_request["headers"], }, ) # Send the request - response = CloudRedisClusterRestTransport._DeleteCluster._get_response( + response = CloudRedisClusterRestTransport._DeleteAclPolicy._get_response( self._host, metadata, query_params, @@ -2513,9 +2981,9 @@ def __call__( resp = operations_pb2.Operation() json_format.Parse(response.content, resp, ignore_unknown_fields=True) - resp = self._interceptor.post_delete_cluster(resp) + resp = self._interceptor.post_delete_acl_policy(resp) response_metadata = [(k, str(v)) for k, v in response.headers.items()] - resp, _ = self._interceptor.post_delete_cluster_with_metadata( + resp, _ = self._interceptor.post_delete_acl_policy_with_metadata( resp, response_metadata ) if CLIENT_LOGGING_SUPPORTED and _LOGGER.isEnabledFor( @@ -2531,21 +2999,22 @@ def __call__( "status": response.status_code, } _LOGGER.debug( - "Received response for google.cloud.redis.cluster_v1beta1.CloudRedisClusterClient.delete_cluster", + "Received response for google.cloud.redis.cluster_v1beta1.CloudRedisClusterClient.delete_acl_policy", extra={ "serviceName": "google.cloud.redis.cluster.v1beta1.CloudRedisCluster", - "rpcName": "DeleteCluster", + "rpcName": "DeleteAclPolicy", "metadata": http_response["headers"], "httpResponse": http_response, }, ) return resp - class _ExportBackup( - _BaseCloudRedisClusterRestTransport._BaseExportBackup, CloudRedisClusterRestStub + class _DeleteAuthToken( + _BaseCloudRedisClusterRestTransport._BaseDeleteAuthToken, + CloudRedisClusterRestStub, ): def __hash__(self): - return hash("CloudRedisClusterRestTransport.ExportBackup") + return hash("CloudRedisClusterRestTransport.DeleteAuthToken") @staticmethod def _get_response( @@ -2566,23 +3035,22 @@ def _get_response( timeout=timeout, headers=headers, params=rest_helpers.flatten_query_params(query_params, strict=True), - data=body, ) return response def __call__( self, - request: cloud_redis_cluster.ExportBackupRequest, + request: cloud_redis_cluster.DeleteAuthTokenRequest, *, retry: OptionalRetry = gapic_v1.method.DEFAULT, timeout: Optional[float] = None, metadata: Sequence[Tuple[str, Union[str, bytes]]] = (), ) -> operations_pb2.Operation: - r"""Call the export backup method over HTTP. + r"""Call the delete auth token method over HTTP. Args: - request (~.cloud_redis_cluster.ExportBackupRequest): - The request object. Request for [ExportBackup]. + request (~.cloud_redis_cluster.DeleteAuthTokenRequest): + The request object. Request message for [DeleteAuthToken][]. retry (google.api_core.retry.Retry): Designation of what errors, if any, should be retried. timeout (float): The timeout for this request. @@ -2599,14 +3067,16 @@ def __call__( """ - http_options = _BaseCloudRedisClusterRestTransport._BaseExportBackup._get_http_options() - request, metadata = self._interceptor.pre_export_backup(request, metadata) + http_options = _BaseCloudRedisClusterRestTransport._BaseDeleteAuthToken._get_http_options() + request, metadata = self._interceptor.pre_delete_auth_token( + request, metadata + ) transcoded_request, body, query_params = transcode_request( http_options, request, required_fields_default_values=getattr( - _BaseCloudRedisClusterRestTransport._BaseExportBackup, - "_BaseExportBackup__REQUIRED_FIELDS_DEFAULT_VALUES", + _BaseCloudRedisClusterRestTransport._BaseDeleteAuthToken, + "_BaseDeleteAuthToken__REQUIRED_FIELDS_DEFAULT_VALUES", None, ), rest_numeric_enums=True, @@ -2630,24 +3100,23 @@ def __call__( "headers": dict(metadata), } _LOGGER.debug( - f"Sending request for google.cloud.redis.cluster_v1beta1.CloudRedisClusterClient.ExportBackup", + f"Sending request for google.cloud.redis.cluster_v1beta1.CloudRedisClusterClient.DeleteAuthToken", extra={ "serviceName": "google.cloud.redis.cluster.v1beta1.CloudRedisCluster", - "rpcName": "ExportBackup", + "rpcName": "DeleteAuthToken", "httpRequest": http_request, "metadata": http_request["headers"], }, ) # Send the request - response = CloudRedisClusterRestTransport._ExportBackup._get_response( + response = CloudRedisClusterRestTransport._DeleteAuthToken._get_response( self._host, metadata, query_params, self._session, timeout, transcoded_request, - body, ) # In case of error, raise the appropriate core_exceptions.GoogleAPICallError exception @@ -2659,9 +3128,9 @@ def __call__( resp = operations_pb2.Operation() json_format.Parse(response.content, resp, ignore_unknown_fields=True) - resp = self._interceptor.post_export_backup(resp) + resp = self._interceptor.post_delete_auth_token(resp) response_metadata = [(k, str(v)) for k, v in response.headers.items()] - resp, _ = self._interceptor.post_export_backup_with_metadata( + resp, _ = self._interceptor.post_delete_auth_token_with_metadata( resp, response_metadata ) if CLIENT_LOGGING_SUPPORTED and _LOGGER.isEnabledFor( @@ -2677,21 +3146,21 @@ def __call__( "status": response.status_code, } _LOGGER.debug( - "Received response for google.cloud.redis.cluster_v1beta1.CloudRedisClusterClient.export_backup", + "Received response for google.cloud.redis.cluster_v1beta1.CloudRedisClusterClient.delete_auth_token", extra={ "serviceName": "google.cloud.redis.cluster.v1beta1.CloudRedisCluster", - "rpcName": "ExportBackup", + "rpcName": "DeleteAuthToken", "metadata": http_response["headers"], "httpResponse": http_response, }, ) return resp - class _GetAclPolicy( - _BaseCloudRedisClusterRestTransport._BaseGetAclPolicy, CloudRedisClusterRestStub + class _DeleteBackup( + _BaseCloudRedisClusterRestTransport._BaseDeleteBackup, CloudRedisClusterRestStub ): def __hash__(self): - return hash("CloudRedisClusterRestTransport.GetAclPolicy") + return hash("CloudRedisClusterRestTransport.DeleteBackup") @staticmethod def _get_response( @@ -2717,17 +3186,17 @@ def _get_response( def __call__( self, - request: cloud_redis_cluster.GetAclPolicyRequest, + request: cloud_redis_cluster.DeleteBackupRequest, *, retry: OptionalRetry = gapic_v1.method.DEFAULT, timeout: Optional[float] = None, metadata: Sequence[Tuple[str, Union[str, bytes]]] = (), - ) -> cloud_redis_cluster.AclPolicy: - r"""Call the get acl policy method over HTTP. + ) -> operations_pb2.Operation: + r"""Call the delete backup method over HTTP. Args: - request (~.cloud_redis_cluster.GetAclPolicyRequest): - The request object. Request for ``GetAclPolicy``. + request (~.cloud_redis_cluster.DeleteBackupRequest): + The request object. Request for [DeleteBackup]. retry (google.api_core.retry.Retry): Designation of what errors, if any, should be retried. timeout (float): The timeout for this request. @@ -2737,18 +3206,21 @@ def __call__( be of type `bytes`. Returns: - ~.cloud_redis_cluster.AclPolicy: - The ACL policy resource. + ~.operations_pb2.Operation: + This resource represents a + long-running operation that is the + result of a network API call. + """ - http_options = _BaseCloudRedisClusterRestTransport._BaseGetAclPolicy._get_http_options() - request, metadata = self._interceptor.pre_get_acl_policy(request, metadata) + http_options = _BaseCloudRedisClusterRestTransport._BaseDeleteBackup._get_http_options() + request, metadata = self._interceptor.pre_delete_backup(request, metadata) transcoded_request, body, query_params = transcode_request( http_options, request, required_fields_default_values=getattr( - _BaseCloudRedisClusterRestTransport._BaseGetAclPolicy, - "_BaseGetAclPolicy__REQUIRED_FIELDS_DEFAULT_VALUES", + _BaseCloudRedisClusterRestTransport._BaseDeleteBackup, + "_BaseDeleteBackup__REQUIRED_FIELDS_DEFAULT_VALUES", None, ), rest_numeric_enums=True, @@ -2772,17 +3244,17 @@ def __call__( "headers": dict(metadata), } _LOGGER.debug( - f"Sending request for google.cloud.redis.cluster_v1beta1.CloudRedisClusterClient.GetAclPolicy", + f"Sending request for google.cloud.redis.cluster_v1beta1.CloudRedisClusterClient.DeleteBackup", extra={ "serviceName": "google.cloud.redis.cluster.v1beta1.CloudRedisCluster", - "rpcName": "GetAclPolicy", + "rpcName": "DeleteBackup", "httpRequest": http_request, "metadata": http_request["headers"], }, ) # Send the request - response = CloudRedisClusterRestTransport._GetAclPolicy._get_response( + response = CloudRedisClusterRestTransport._DeleteBackup._get_response( self._host, metadata, query_params, @@ -2797,21 +3269,19 @@ def __call__( raise core_exceptions.from_http_response(response) # Return the response - resp = cloud_redis_cluster.AclPolicy() - pb_resp = cloud_redis_cluster.AclPolicy.pb(resp) - - json_format.Parse(response.content, pb_resp, ignore_unknown_fields=True) + resp = operations_pb2.Operation() + json_format.Parse(response.content, resp, ignore_unknown_fields=True) - resp = self._interceptor.post_get_acl_policy(resp) + resp = self._interceptor.post_delete_backup(resp) response_metadata = [(k, str(v)) for k, v in response.headers.items()] - resp, _ = self._interceptor.post_get_acl_policy_with_metadata( + resp, _ = self._interceptor.post_delete_backup_with_metadata( resp, response_metadata ) if CLIENT_LOGGING_SUPPORTED and _LOGGER.isEnabledFor( logging.DEBUG ): # pragma: NO COVER try: - response_payload = cloud_redis_cluster.AclPolicy.to_json(response) + response_payload = json_format.MessageToJson(resp) except: response_payload = None http_response = { @@ -2820,22 +3290,22 @@ def __call__( "status": response.status_code, } _LOGGER.debug( - "Received response for google.cloud.redis.cluster_v1beta1.CloudRedisClusterClient.get_acl_policy", + "Received response for google.cloud.redis.cluster_v1beta1.CloudRedisClusterClient.delete_backup", extra={ "serviceName": "google.cloud.redis.cluster.v1beta1.CloudRedisCluster", - "rpcName": "GetAclPolicy", + "rpcName": "DeleteBackup", "metadata": http_response["headers"], "httpResponse": http_response, }, ) return resp - class _GetAclPolicyRevision( - _BaseCloudRedisClusterRestTransport._BaseGetAclPolicyRevision, + class _DeleteCluster( + _BaseCloudRedisClusterRestTransport._BaseDeleteCluster, CloudRedisClusterRestStub, ): def __hash__(self): - return hash("CloudRedisClusterRestTransport.GetAclPolicyRevision") + return hash("CloudRedisClusterRestTransport.DeleteCluster") @staticmethod def _get_response( @@ -2861,17 +3331,17 @@ def _get_response( def __call__( self, - request: cloud_redis_cluster.GetAclPolicyRevisionRequest, + request: cloud_redis_cluster.DeleteClusterRequest, *, retry: OptionalRetry = gapic_v1.method.DEFAULT, timeout: Optional[float] = None, metadata: Sequence[Tuple[str, Union[str, bytes]]] = (), - ) -> cloud_redis_cluster.AclPolicyRevision: - r"""Call the get acl policy revision method over HTTP. + ) -> operations_pb2.Operation: + r"""Call the delete cluster method over HTTP. Args: - request (~.cloud_redis_cluster.GetAclPolicyRevisionRequest): - The request object. Request for ``GetAclPolicyRevision``. + request (~.cloud_redis_cluster.DeleteClusterRequest): + The request object. Request for [DeleteCluster][CloudRedis.DeleteCluster]. retry (google.api_core.retry.Retry): Designation of what errors, if any, should be retried. timeout (float): The timeout for this request. @@ -2881,20 +3351,21 @@ def __call__( be of type `bytes`. Returns: - ~.cloud_redis_cluster.AclPolicyRevision: - The ACL policy revision resource. + ~.operations_pb2.Operation: + This resource represents a + long-running operation that is the + result of a network API call. + """ - http_options = _BaseCloudRedisClusterRestTransport._BaseGetAclPolicyRevision._get_http_options() - request, metadata = self._interceptor.pre_get_acl_policy_revision( - request, metadata - ) + http_options = _BaseCloudRedisClusterRestTransport._BaseDeleteCluster._get_http_options() + request, metadata = self._interceptor.pre_delete_cluster(request, metadata) transcoded_request, body, query_params = transcode_request( http_options, request, required_fields_default_values=getattr( - _BaseCloudRedisClusterRestTransport._BaseGetAclPolicyRevision, - "_BaseGetAclPolicyRevision__REQUIRED_FIELDS_DEFAULT_VALUES", + _BaseCloudRedisClusterRestTransport._BaseDeleteCluster, + "_BaseDeleteCluster__REQUIRED_FIELDS_DEFAULT_VALUES", None, ), rest_numeric_enums=True, @@ -2918,25 +3389,23 @@ def __call__( "headers": dict(metadata), } _LOGGER.debug( - f"Sending request for google.cloud.redis.cluster_v1beta1.CloudRedisClusterClient.GetAclPolicyRevision", + f"Sending request for google.cloud.redis.cluster_v1beta1.CloudRedisClusterClient.DeleteCluster", extra={ "serviceName": "google.cloud.redis.cluster.v1beta1.CloudRedisCluster", - "rpcName": "GetAclPolicyRevision", + "rpcName": "DeleteCluster", "httpRequest": http_request, "metadata": http_request["headers"], }, ) # Send the request - response = ( - CloudRedisClusterRestTransport._GetAclPolicyRevision._get_response( - self._host, - metadata, - query_params, - self._session, - timeout, - transcoded_request, - ) + response = CloudRedisClusterRestTransport._DeleteCluster._get_response( + self._host, + metadata, + query_params, + self._session, + timeout, + transcoded_request, ) # In case of error, raise the appropriate core_exceptions.GoogleAPICallError exception @@ -2945,23 +3414,19 @@ def __call__( raise core_exceptions.from_http_response(response) # Return the response - resp = cloud_redis_cluster.AclPolicyRevision() - pb_resp = cloud_redis_cluster.AclPolicyRevision.pb(resp) - - json_format.Parse(response.content, pb_resp, ignore_unknown_fields=True) + resp = operations_pb2.Operation() + json_format.Parse(response.content, resp, ignore_unknown_fields=True) - resp = self._interceptor.post_get_acl_policy_revision(resp) + resp = self._interceptor.post_delete_cluster(resp) response_metadata = [(k, str(v)) for k, v in response.headers.items()] - resp, _ = self._interceptor.post_get_acl_policy_revision_with_metadata( + resp, _ = self._interceptor.post_delete_cluster_with_metadata( resp, response_metadata ) if CLIENT_LOGGING_SUPPORTED and _LOGGER.isEnabledFor( logging.DEBUG ): # pragma: NO COVER try: - response_payload = cloud_redis_cluster.AclPolicyRevision.to_json( - response - ) + response_payload = json_format.MessageToJson(resp) except: response_payload = None http_response = { @@ -2970,21 +3435,22 @@ def __call__( "status": response.status_code, } _LOGGER.debug( - "Received response for google.cloud.redis.cluster_v1beta1.CloudRedisClusterClient.get_acl_policy_revision", + "Received response for google.cloud.redis.cluster_v1beta1.CloudRedisClusterClient.delete_cluster", extra={ "serviceName": "google.cloud.redis.cluster.v1beta1.CloudRedisCluster", - "rpcName": "GetAclPolicyRevision", + "rpcName": "DeleteCluster", "metadata": http_response["headers"], "httpResponse": http_response, }, ) return resp - class _GetBackup( - _BaseCloudRedisClusterRestTransport._BaseGetBackup, CloudRedisClusterRestStub + class _DeleteTokenAuthUser( + _BaseCloudRedisClusterRestTransport._BaseDeleteTokenAuthUser, + CloudRedisClusterRestStub, ): def __hash__(self): - return hash("CloudRedisClusterRestTransport.GetBackup") + return hash("CloudRedisClusterRestTransport.DeleteTokenAuthUser") @staticmethod def _get_response( @@ -3010,17 +3476,17 @@ def _get_response( def __call__( self, - request: cloud_redis_cluster.GetBackupRequest, + request: cloud_redis_cluster.DeleteTokenAuthUserRequest, *, retry: OptionalRetry = gapic_v1.method.DEFAULT, timeout: Optional[float] = None, metadata: Sequence[Tuple[str, Union[str, bytes]]] = (), - ) -> cloud_redis_cluster.Backup: - r"""Call the get backup method over HTTP. + ) -> operations_pb2.Operation: + r"""Call the delete token auth user method over HTTP. Args: - request (~.cloud_redis_cluster.GetBackupRequest): - The request object. Request for [GetBackup]. + request (~.cloud_redis_cluster.DeleteTokenAuthUserRequest): + The request object. Request message for [DeleteTokenAuthUser][]. retry (google.api_core.retry.Retry): Designation of what errors, if any, should be retried. timeout (float): The timeout for this request. @@ -3030,20 +3496,23 @@ def __call__( be of type `bytes`. Returns: - ~.cloud_redis_cluster.Backup: - Backup of a cluster. + ~.operations_pb2.Operation: + This resource represents a + long-running operation that is the + result of a network API call. + """ - http_options = ( - _BaseCloudRedisClusterRestTransport._BaseGetBackup._get_http_options() + http_options = _BaseCloudRedisClusterRestTransport._BaseDeleteTokenAuthUser._get_http_options() + request, metadata = self._interceptor.pre_delete_token_auth_user( + request, metadata ) - request, metadata = self._interceptor.pre_get_backup(request, metadata) transcoded_request, body, query_params = transcode_request( http_options, request, required_fields_default_values=getattr( - _BaseCloudRedisClusterRestTransport._BaseGetBackup, - "_BaseGetBackup__REQUIRED_FIELDS_DEFAULT_VALUES", + _BaseCloudRedisClusterRestTransport._BaseDeleteTokenAuthUser, + "_BaseDeleteTokenAuthUser__REQUIRED_FIELDS_DEFAULT_VALUES", None, ), rest_numeric_enums=True, @@ -3067,23 +3536,25 @@ def __call__( "headers": dict(metadata), } _LOGGER.debug( - f"Sending request for google.cloud.redis.cluster_v1beta1.CloudRedisClusterClient.GetBackup", + f"Sending request for google.cloud.redis.cluster_v1beta1.CloudRedisClusterClient.DeleteTokenAuthUser", extra={ "serviceName": "google.cloud.redis.cluster.v1beta1.CloudRedisCluster", - "rpcName": "GetBackup", + "rpcName": "DeleteTokenAuthUser", "httpRequest": http_request, "metadata": http_request["headers"], }, ) # Send the request - response = CloudRedisClusterRestTransport._GetBackup._get_response( - self._host, - metadata, - query_params, - self._session, - timeout, - transcoded_request, + response = ( + CloudRedisClusterRestTransport._DeleteTokenAuthUser._get_response( + self._host, + metadata, + query_params, + self._session, + timeout, + transcoded_request, + ) ) # In case of error, raise the appropriate core_exceptions.GoogleAPICallError exception @@ -3092,21 +3563,19 @@ def __call__( raise core_exceptions.from_http_response(response) # Return the response - resp = cloud_redis_cluster.Backup() - pb_resp = cloud_redis_cluster.Backup.pb(resp) - - json_format.Parse(response.content, pb_resp, ignore_unknown_fields=True) + resp = operations_pb2.Operation() + json_format.Parse(response.content, resp, ignore_unknown_fields=True) - resp = self._interceptor.post_get_backup(resp) + resp = self._interceptor.post_delete_token_auth_user(resp) response_metadata = [(k, str(v)) for k, v in response.headers.items()] - resp, _ = self._interceptor.post_get_backup_with_metadata( + resp, _ = self._interceptor.post_delete_token_auth_user_with_metadata( resp, response_metadata ) if CLIENT_LOGGING_SUPPORTED and _LOGGER.isEnabledFor( logging.DEBUG ): # pragma: NO COVER try: - response_payload = cloud_redis_cluster.Backup.to_json(response) + response_payload = json_format.MessageToJson(resp) except: response_payload = None http_response = { @@ -3115,22 +3584,898 @@ def __call__( "status": response.status_code, } _LOGGER.debug( - "Received response for google.cloud.redis.cluster_v1beta1.CloudRedisClusterClient.get_backup", + "Received response for google.cloud.redis.cluster_v1beta1.CloudRedisClusterClient.delete_token_auth_user", extra={ "serviceName": "google.cloud.redis.cluster.v1beta1.CloudRedisCluster", - "rpcName": "GetBackup", + "rpcName": "DeleteTokenAuthUser", "metadata": http_response["headers"], "httpResponse": http_response, }, ) return resp - class _GetBackupCollection( - _BaseCloudRedisClusterRestTransport._BaseGetBackupCollection, - CloudRedisClusterRestStub, + class _ExportBackup( + _BaseCloudRedisClusterRestTransport._BaseExportBackup, CloudRedisClusterRestStub ): def __hash__(self): - return hash("CloudRedisClusterRestTransport.GetBackupCollection") + return hash("CloudRedisClusterRestTransport.ExportBackup") + + @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: cloud_redis_cluster.ExportBackupRequest, + *, + retry: OptionalRetry = gapic_v1.method.DEFAULT, + timeout: Optional[float] = None, + metadata: Sequence[Tuple[str, Union[str, bytes]]] = (), + ) -> operations_pb2.Operation: + r"""Call the export backup method over HTTP. + + Args: + request (~.cloud_redis_cluster.ExportBackupRequest): + The request object. Request for [ExportBackup]. + 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: + This resource represents a + long-running operation that is the + result of a network API call. + + """ + + http_options = _BaseCloudRedisClusterRestTransport._BaseExportBackup._get_http_options() + request, metadata = self._interceptor.pre_export_backup(request, metadata) + transcoded_request, body, query_params = transcode_request( + http_options, + request, + required_fields_default_values=getattr( + _BaseCloudRedisClusterRestTransport._BaseExportBackup, + "_BaseExportBackup__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.redis.cluster_v1beta1.CloudRedisClusterClient.ExportBackup", + extra={ + "serviceName": "google.cloud.redis.cluster.v1beta1.CloudRedisCluster", + "rpcName": "ExportBackup", + "httpRequest": http_request, + "metadata": http_request["headers"], + }, + ) + + # Send the request + response = CloudRedisClusterRestTransport._ExportBackup._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 = operations_pb2.Operation() + json_format.Parse(response.content, resp, ignore_unknown_fields=True) + + resp = self._interceptor.post_export_backup(resp) + response_metadata = [(k, str(v)) for k, v in response.headers.items()] + resp, _ = self._interceptor.post_export_backup_with_metadata( + resp, response_metadata + ) + 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.redis.cluster_v1beta1.CloudRedisClusterClient.export_backup", + extra={ + "serviceName": "google.cloud.redis.cluster.v1beta1.CloudRedisCluster", + "rpcName": "ExportBackup", + "metadata": http_response["headers"], + "httpResponse": http_response, + }, + ) + return resp + + class _GetAclPolicy( + _BaseCloudRedisClusterRestTransport._BaseGetAclPolicy, CloudRedisClusterRestStub + ): + def __hash__(self): + return hash("CloudRedisClusterRestTransport.GetAclPolicy") + + @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: cloud_redis_cluster.GetAclPolicyRequest, + *, + retry: OptionalRetry = gapic_v1.method.DEFAULT, + timeout: Optional[float] = None, + metadata: Sequence[Tuple[str, Union[str, bytes]]] = (), + ) -> cloud_redis_cluster.AclPolicy: + r"""Call the get acl policy method over HTTP. + + Args: + request (~.cloud_redis_cluster.GetAclPolicyRequest): + The request object. Request for ``GetAclPolicy``. + 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: + ~.cloud_redis_cluster.AclPolicy: + The ACL policy resource. + """ + + http_options = _BaseCloudRedisClusterRestTransport._BaseGetAclPolicy._get_http_options() + request, metadata = self._interceptor.pre_get_acl_policy(request, metadata) + transcoded_request, body, query_params = transcode_request( + http_options, + request, + required_fields_default_values=getattr( + _BaseCloudRedisClusterRestTransport._BaseGetAclPolicy, + "_BaseGetAclPolicy__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.redis.cluster_v1beta1.CloudRedisClusterClient.GetAclPolicy", + extra={ + "serviceName": "google.cloud.redis.cluster.v1beta1.CloudRedisCluster", + "rpcName": "GetAclPolicy", + "httpRequest": http_request, + "metadata": http_request["headers"], + }, + ) + + # Send the request + response = CloudRedisClusterRestTransport._GetAclPolicy._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 = cloud_redis_cluster.AclPolicy() + pb_resp = cloud_redis_cluster.AclPolicy.pb(resp) + + json_format.Parse(response.content, pb_resp, ignore_unknown_fields=True) + + resp = self._interceptor.post_get_acl_policy(resp) + response_metadata = [(k, str(v)) for k, v in response.headers.items()] + resp, _ = self._interceptor.post_get_acl_policy_with_metadata( + resp, response_metadata + ) + if CLIENT_LOGGING_SUPPORTED and _LOGGER.isEnabledFor( + logging.DEBUG + ): # pragma: NO COVER + try: + response_payload = cloud_redis_cluster.AclPolicy.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.redis.cluster_v1beta1.CloudRedisClusterClient.get_acl_policy", + extra={ + "serviceName": "google.cloud.redis.cluster.v1beta1.CloudRedisCluster", + "rpcName": "GetAclPolicy", + "metadata": http_response["headers"], + "httpResponse": http_response, + }, + ) + return resp + + class _GetAclPolicyRevision( + _BaseCloudRedisClusterRestTransport._BaseGetAclPolicyRevision, + CloudRedisClusterRestStub, + ): + def __hash__(self): + return hash("CloudRedisClusterRestTransport.GetAclPolicyRevision") + + @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: cloud_redis_cluster.GetAclPolicyRevisionRequest, + *, + retry: OptionalRetry = gapic_v1.method.DEFAULT, + timeout: Optional[float] = None, + metadata: Sequence[Tuple[str, Union[str, bytes]]] = (), + ) -> cloud_redis_cluster.AclPolicyRevision: + r"""Call the get acl policy revision method over HTTP. + + Args: + request (~.cloud_redis_cluster.GetAclPolicyRevisionRequest): + The request object. Request for ``GetAclPolicyRevision``. + 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: + ~.cloud_redis_cluster.AclPolicyRevision: + The ACL policy revision resource. + """ + + http_options = _BaseCloudRedisClusterRestTransport._BaseGetAclPolicyRevision._get_http_options() + request, metadata = self._interceptor.pre_get_acl_policy_revision( + request, metadata + ) + transcoded_request, body, query_params = transcode_request( + http_options, + request, + required_fields_default_values=getattr( + _BaseCloudRedisClusterRestTransport._BaseGetAclPolicyRevision, + "_BaseGetAclPolicyRevision__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.redis.cluster_v1beta1.CloudRedisClusterClient.GetAclPolicyRevision", + extra={ + "serviceName": "google.cloud.redis.cluster.v1beta1.CloudRedisCluster", + "rpcName": "GetAclPolicyRevision", + "httpRequest": http_request, + "metadata": http_request["headers"], + }, + ) + + # Send the request + response = ( + CloudRedisClusterRestTransport._GetAclPolicyRevision._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 = cloud_redis_cluster.AclPolicyRevision() + pb_resp = cloud_redis_cluster.AclPolicyRevision.pb(resp) + + json_format.Parse(response.content, pb_resp, ignore_unknown_fields=True) + + resp = self._interceptor.post_get_acl_policy_revision(resp) + response_metadata = [(k, str(v)) for k, v in response.headers.items()] + resp, _ = self._interceptor.post_get_acl_policy_revision_with_metadata( + resp, response_metadata + ) + if CLIENT_LOGGING_SUPPORTED and _LOGGER.isEnabledFor( + logging.DEBUG + ): # pragma: NO COVER + try: + response_payload = cloud_redis_cluster.AclPolicyRevision.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.redis.cluster_v1beta1.CloudRedisClusterClient.get_acl_policy_revision", + extra={ + "serviceName": "google.cloud.redis.cluster.v1beta1.CloudRedisCluster", + "rpcName": "GetAclPolicyRevision", + "metadata": http_response["headers"], + "httpResponse": http_response, + }, + ) + return resp + + class _GetAuthToken( + _BaseCloudRedisClusterRestTransport._BaseGetAuthToken, CloudRedisClusterRestStub + ): + def __hash__(self): + return hash("CloudRedisClusterRestTransport.GetAuthToken") + + @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: cloud_redis_cluster.GetAuthTokenRequest, + *, + retry: OptionalRetry = gapic_v1.method.DEFAULT, + timeout: Optional[float] = None, + metadata: Sequence[Tuple[str, Union[str, bytes]]] = (), + ) -> cloud_redis_cluster.AuthToken: + r"""Call the get auth token method over HTTP. + + Args: + request (~.cloud_redis_cluster.GetAuthTokenRequest): + The request object. Request message for [GetAuthToken][]. + 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: + ~.cloud_redis_cluster.AuthToken: + Auth token for the cluster. + """ + + http_options = _BaseCloudRedisClusterRestTransport._BaseGetAuthToken._get_http_options() + request, metadata = self._interceptor.pre_get_auth_token(request, metadata) + transcoded_request, body, query_params = transcode_request( + http_options, + request, + required_fields_default_values=getattr( + _BaseCloudRedisClusterRestTransport._BaseGetAuthToken, + "_BaseGetAuthToken__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.redis.cluster_v1beta1.CloudRedisClusterClient.GetAuthToken", + extra={ + "serviceName": "google.cloud.redis.cluster.v1beta1.CloudRedisCluster", + "rpcName": "GetAuthToken", + "httpRequest": http_request, + "metadata": http_request["headers"], + }, + ) + + # Send the request + response = CloudRedisClusterRestTransport._GetAuthToken._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 = cloud_redis_cluster.AuthToken() + pb_resp = cloud_redis_cluster.AuthToken.pb(resp) + + json_format.Parse(response.content, pb_resp, ignore_unknown_fields=True) + + resp = self._interceptor.post_get_auth_token(resp) + response_metadata = [(k, str(v)) for k, v in response.headers.items()] + resp, _ = self._interceptor.post_get_auth_token_with_metadata( + resp, response_metadata + ) + if CLIENT_LOGGING_SUPPORTED and _LOGGER.isEnabledFor( + logging.DEBUG + ): # pragma: NO COVER + try: + response_payload = cloud_redis_cluster.AuthToken.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.redis.cluster_v1beta1.CloudRedisClusterClient.get_auth_token", + extra={ + "serviceName": "google.cloud.redis.cluster.v1beta1.CloudRedisCluster", + "rpcName": "GetAuthToken", + "metadata": http_response["headers"], + "httpResponse": http_response, + }, + ) + return resp + + class _GetBackup( + _BaseCloudRedisClusterRestTransport._BaseGetBackup, CloudRedisClusterRestStub + ): + def __hash__(self): + return hash("CloudRedisClusterRestTransport.GetBackup") + + @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: cloud_redis_cluster.GetBackupRequest, + *, + retry: OptionalRetry = gapic_v1.method.DEFAULT, + timeout: Optional[float] = None, + metadata: Sequence[Tuple[str, Union[str, bytes]]] = (), + ) -> cloud_redis_cluster.Backup: + r"""Call the get backup method over HTTP. + + Args: + request (~.cloud_redis_cluster.GetBackupRequest): + The request object. Request for [GetBackup]. + 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: + ~.cloud_redis_cluster.Backup: + Backup of a cluster. + """ + + http_options = ( + _BaseCloudRedisClusterRestTransport._BaseGetBackup._get_http_options() + ) + request, metadata = self._interceptor.pre_get_backup(request, metadata) + transcoded_request, body, query_params = transcode_request( + http_options, + request, + required_fields_default_values=getattr( + _BaseCloudRedisClusterRestTransport._BaseGetBackup, + "_BaseGetBackup__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.redis.cluster_v1beta1.CloudRedisClusterClient.GetBackup", + extra={ + "serviceName": "google.cloud.redis.cluster.v1beta1.CloudRedisCluster", + "rpcName": "GetBackup", + "httpRequest": http_request, + "metadata": http_request["headers"], + }, + ) + + # Send the request + response = CloudRedisClusterRestTransport._GetBackup._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 = cloud_redis_cluster.Backup() + pb_resp = cloud_redis_cluster.Backup.pb(resp) + + json_format.Parse(response.content, pb_resp, ignore_unknown_fields=True) + + resp = self._interceptor.post_get_backup(resp) + response_metadata = [(k, str(v)) for k, v in response.headers.items()] + resp, _ = self._interceptor.post_get_backup_with_metadata( + resp, response_metadata + ) + if CLIENT_LOGGING_SUPPORTED and _LOGGER.isEnabledFor( + logging.DEBUG + ): # pragma: NO COVER + try: + response_payload = cloud_redis_cluster.Backup.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.redis.cluster_v1beta1.CloudRedisClusterClient.get_backup", + extra={ + "serviceName": "google.cloud.redis.cluster.v1beta1.CloudRedisCluster", + "rpcName": "GetBackup", + "metadata": http_response["headers"], + "httpResponse": http_response, + }, + ) + return resp + + class _GetBackupCollection( + _BaseCloudRedisClusterRestTransport._BaseGetBackupCollection, + CloudRedisClusterRestStub, + ): + def __hash__(self): + return hash("CloudRedisClusterRestTransport.GetBackupCollection") + + @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: cloud_redis_cluster.GetBackupCollectionRequest, + *, + retry: OptionalRetry = gapic_v1.method.DEFAULT, + timeout: Optional[float] = None, + metadata: Sequence[Tuple[str, Union[str, bytes]]] = (), + ) -> cloud_redis_cluster.BackupCollection: + r"""Call the get backup collection method over HTTP. + + Args: + request (~.cloud_redis_cluster.GetBackupCollectionRequest): + The request object. Request for [GetBackupCollection]. + 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: + ~.cloud_redis_cluster.BackupCollection: + BackupCollection of a cluster. + """ + + http_options = _BaseCloudRedisClusterRestTransport._BaseGetBackupCollection._get_http_options() + request, metadata = self._interceptor.pre_get_backup_collection( + request, metadata + ) + transcoded_request, body, query_params = transcode_request( + http_options, + request, + required_fields_default_values=getattr( + _BaseCloudRedisClusterRestTransport._BaseGetBackupCollection, + "_BaseGetBackupCollection__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.redis.cluster_v1beta1.CloudRedisClusterClient.GetBackupCollection", + extra={ + "serviceName": "google.cloud.redis.cluster.v1beta1.CloudRedisCluster", + "rpcName": "GetBackupCollection", + "httpRequest": http_request, + "metadata": http_request["headers"], + }, + ) + + # Send the request + response = ( + CloudRedisClusterRestTransport._GetBackupCollection._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 = cloud_redis_cluster.BackupCollection() + pb_resp = cloud_redis_cluster.BackupCollection.pb(resp) + + json_format.Parse(response.content, pb_resp, ignore_unknown_fields=True) + + resp = self._interceptor.post_get_backup_collection(resp) + response_metadata = [(k, str(v)) for k, v in response.headers.items()] + resp, _ = self._interceptor.post_get_backup_collection_with_metadata( + resp, response_metadata + ) + if CLIENT_LOGGING_SUPPORTED and _LOGGER.isEnabledFor( + logging.DEBUG + ): # pragma: NO COVER + try: + response_payload = cloud_redis_cluster.BackupCollection.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.redis.cluster_v1beta1.CloudRedisClusterClient.get_backup_collection", + extra={ + "serviceName": "google.cloud.redis.cluster.v1beta1.CloudRedisCluster", + "rpcName": "GetBackupCollection", + "metadata": http_response["headers"], + "httpResponse": http_response, + }, + ) + return resp + + class _GetCluster( + _BaseCloudRedisClusterRestTransport._BaseGetCluster, CloudRedisClusterRestStub + ): + def __hash__(self): + return hash("CloudRedisClusterRestTransport.GetCluster") @staticmethod def _get_response( @@ -3156,17 +4501,17 @@ def _get_response( def __call__( self, - request: cloud_redis_cluster.GetBackupCollectionRequest, + request: cloud_redis_cluster.GetClusterRequest, *, retry: OptionalRetry = gapic_v1.method.DEFAULT, timeout: Optional[float] = None, metadata: Sequence[Tuple[str, Union[str, bytes]]] = (), - ) -> cloud_redis_cluster.BackupCollection: - r"""Call the get backup collection method over HTTP. + ) -> cloud_redis_cluster.Cluster: + r"""Call the get cluster method over HTTP. Args: - request (~.cloud_redis_cluster.GetBackupCollectionRequest): - The request object. Request for [GetBackupCollection]. + request (~.cloud_redis_cluster.GetClusterRequest): + The request object. Request for [GetCluster][CloudRedis.GetCluster]. retry (google.api_core.retry.Retry): Designation of what errors, if any, should be retried. timeout (float): The timeout for this request. @@ -3176,20 +4521,20 @@ def __call__( be of type `bytes`. Returns: - ~.cloud_redis_cluster.BackupCollection: - BackupCollection of a cluster. + ~.cloud_redis_cluster.Cluster: + A cluster instance. """ - http_options = _BaseCloudRedisClusterRestTransport._BaseGetBackupCollection._get_http_options() - request, metadata = self._interceptor.pre_get_backup_collection( - request, metadata + http_options = ( + _BaseCloudRedisClusterRestTransport._BaseGetCluster._get_http_options() ) + request, metadata = self._interceptor.pre_get_cluster(request, metadata) transcoded_request, body, query_params = transcode_request( http_options, request, required_fields_default_values=getattr( - _BaseCloudRedisClusterRestTransport._BaseGetBackupCollection, - "_BaseGetBackupCollection__REQUIRED_FIELDS_DEFAULT_VALUES", + _BaseCloudRedisClusterRestTransport._BaseGetCluster, + "_BaseGetCluster__REQUIRED_FIELDS_DEFAULT_VALUES", None, ), rest_numeric_enums=True, @@ -3213,25 +4558,171 @@ def __call__( "headers": dict(metadata), } _LOGGER.debug( - f"Sending request for google.cloud.redis.cluster_v1beta1.CloudRedisClusterClient.GetBackupCollection", + f"Sending request for google.cloud.redis.cluster_v1beta1.CloudRedisClusterClient.GetCluster", extra={ "serviceName": "google.cloud.redis.cluster.v1beta1.CloudRedisCluster", - "rpcName": "GetBackupCollection", + "rpcName": "GetCluster", "httpRequest": http_request, "metadata": http_request["headers"], }, ) # Send the request - response = ( - CloudRedisClusterRestTransport._GetBackupCollection._get_response( - self._host, - metadata, - query_params, - self._session, - timeout, - transcoded_request, + response = CloudRedisClusterRestTransport._GetCluster._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 = cloud_redis_cluster.Cluster() + pb_resp = cloud_redis_cluster.Cluster.pb(resp) + + json_format.Parse(response.content, pb_resp, ignore_unknown_fields=True) + + resp = self._interceptor.post_get_cluster(resp) + response_metadata = [(k, str(v)) for k, v in response.headers.items()] + resp, _ = self._interceptor.post_get_cluster_with_metadata( + resp, response_metadata + ) + if CLIENT_LOGGING_SUPPORTED and _LOGGER.isEnabledFor( + logging.DEBUG + ): # pragma: NO COVER + try: + response_payload = cloud_redis_cluster.Cluster.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.redis.cluster_v1beta1.CloudRedisClusterClient.get_cluster", + extra={ + "serviceName": "google.cloud.redis.cluster.v1beta1.CloudRedisCluster", + "rpcName": "GetCluster", + "metadata": http_response["headers"], + "httpResponse": http_response, + }, + ) + return resp + + class _GetClusterCertificateAuthority( + _BaseCloudRedisClusterRestTransport._BaseGetClusterCertificateAuthority, + CloudRedisClusterRestStub, + ): + def __hash__(self): + return hash("CloudRedisClusterRestTransport.GetClusterCertificateAuthority") + + @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: cloud_redis_cluster.GetClusterCertificateAuthorityRequest, + *, + retry: OptionalRetry = gapic_v1.method.DEFAULT, + timeout: Optional[float] = None, + metadata: Sequence[Tuple[str, Union[str, bytes]]] = (), + ) -> cloud_redis_cluster.CertificateAuthority: + r"""Call the get cluster certificate + authority method over HTTP. + + Args: + request (~.cloud_redis_cluster.GetClusterCertificateAuthorityRequest): + The request object. Request for + [GetClusterCertificateAuthorityRequest][CloudRedis.GetClusterCertificateAuthorityRequest]. + 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: + ~.cloud_redis_cluster.CertificateAuthority: + Redis cluster certificate authority + """ + + http_options = _BaseCloudRedisClusterRestTransport._BaseGetClusterCertificateAuthority._get_http_options() + request, metadata = self._interceptor.pre_get_cluster_certificate_authority( + request, metadata + ) + transcoded_request, body, query_params = transcode_request( + http_options, + request, + required_fields_default_values=getattr( + _BaseCloudRedisClusterRestTransport._BaseGetClusterCertificateAuthority, + "_BaseGetClusterCertificateAuthority__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.redis.cluster_v1beta1.CloudRedisClusterClient.GetClusterCertificateAuthority", + extra={ + "serviceName": "google.cloud.redis.cluster.v1beta1.CloudRedisCluster", + "rpcName": "GetClusterCertificateAuthority", + "httpRequest": http_request, + "metadata": http_request["headers"], + }, ) + + # Send the request + response = CloudRedisClusterRestTransport._GetClusterCertificateAuthority._get_response( + self._host, + metadata, + query_params, + self._session, + timeout, + transcoded_request, ) # In case of error, raise the appropriate core_exceptions.GoogleAPICallError exception @@ -3240,21 +4731,23 @@ def __call__( raise core_exceptions.from_http_response(response) # Return the response - resp = cloud_redis_cluster.BackupCollection() - pb_resp = cloud_redis_cluster.BackupCollection.pb(resp) + resp = cloud_redis_cluster.CertificateAuthority() + pb_resp = cloud_redis_cluster.CertificateAuthority.pb(resp) json_format.Parse(response.content, pb_resp, ignore_unknown_fields=True) - resp = self._interceptor.post_get_backup_collection(resp) + resp = self._interceptor.post_get_cluster_certificate_authority(resp) response_metadata = [(k, str(v)) for k, v in response.headers.items()] - resp, _ = self._interceptor.post_get_backup_collection_with_metadata( - resp, response_metadata + resp, _ = ( + self._interceptor.post_get_cluster_certificate_authority_with_metadata( + resp, response_metadata + ) ) if CLIENT_LOGGING_SUPPORTED and _LOGGER.isEnabledFor( logging.DEBUG ): # pragma: NO COVER try: - response_payload = cloud_redis_cluster.BackupCollection.to_json( + response_payload = cloud_redis_cluster.CertificateAuthority.to_json( response ) except: @@ -3265,21 +4758,24 @@ def __call__( "status": response.status_code, } _LOGGER.debug( - "Received response for google.cloud.redis.cluster_v1beta1.CloudRedisClusterClient.get_backup_collection", + "Received response for google.cloud.redis.cluster_v1beta1.CloudRedisClusterClient.get_cluster_certificate_authority", extra={ "serviceName": "google.cloud.redis.cluster.v1beta1.CloudRedisCluster", - "rpcName": "GetBackupCollection", + "rpcName": "GetClusterCertificateAuthority", "metadata": http_response["headers"], "httpResponse": http_response, }, ) return resp - class _GetCluster( - _BaseCloudRedisClusterRestTransport._BaseGetCluster, CloudRedisClusterRestStub + class _GetSharedRegionalCertificateAuthority( + _BaseCloudRedisClusterRestTransport._BaseGetSharedRegionalCertificateAuthority, + CloudRedisClusterRestStub, ): def __hash__(self): - return hash("CloudRedisClusterRestTransport.GetCluster") + return hash( + "CloudRedisClusterRestTransport.GetSharedRegionalCertificateAuthority" + ) @staticmethod def _get_response( @@ -3305,40 +4801,44 @@ def _get_response( def __call__( self, - request: cloud_redis_cluster.GetClusterRequest, + request: cloud_redis_cluster.GetSharedRegionalCertificateAuthorityRequest, *, retry: OptionalRetry = gapic_v1.method.DEFAULT, timeout: Optional[float] = None, metadata: Sequence[Tuple[str, Union[str, bytes]]] = (), - ) -> cloud_redis_cluster.Cluster: - r"""Call the get cluster method over HTTP. + ) -> cloud_redis_cluster.SharedRegionalCertificateAuthority: + r"""Call the get shared regional + certificate authority method over HTTP. - Args: - request (~.cloud_redis_cluster.GetClusterRequest): - The request object. Request for [GetCluster][CloudRedis.GetCluster]. - 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`. + Args: + request (~.cloud_redis_cluster.GetSharedRegionalCertificateAuthorityRequest): + The request object. Request for + [GetSharedRegionalCertificateAuthority][CloudRedis.GetSharedRegionalCertificateAuthority]. + 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: - ~.cloud_redis_cluster.Cluster: - A cluster instance. + Returns: + ~.cloud_redis_cluster.SharedRegionalCertificateAuthority: + Shared regional certificate authority """ - http_options = ( - _BaseCloudRedisClusterRestTransport._BaseGetCluster._get_http_options() + http_options = _BaseCloudRedisClusterRestTransport._BaseGetSharedRegionalCertificateAuthority._get_http_options() + request, metadata = ( + self._interceptor.pre_get_shared_regional_certificate_authority( + request, metadata + ) ) - request, metadata = self._interceptor.pre_get_cluster(request, metadata) transcoded_request, body, query_params = transcode_request( http_options, request, required_fields_default_values=getattr( - _BaseCloudRedisClusterRestTransport._BaseGetCluster, - "_BaseGetCluster__REQUIRED_FIELDS_DEFAULT_VALUES", + _BaseCloudRedisClusterRestTransport._BaseGetSharedRegionalCertificateAuthority, + "_BaseGetSharedRegionalCertificateAuthority__REQUIRED_FIELDS_DEFAULT_VALUES", None, ), rest_numeric_enums=True, @@ -3362,17 +4862,17 @@ def __call__( "headers": dict(metadata), } _LOGGER.debug( - f"Sending request for google.cloud.redis.cluster_v1beta1.CloudRedisClusterClient.GetCluster", + f"Sending request for google.cloud.redis.cluster_v1beta1.CloudRedisClusterClient.GetSharedRegionalCertificateAuthority", extra={ "serviceName": "google.cloud.redis.cluster.v1beta1.CloudRedisCluster", - "rpcName": "GetCluster", + "rpcName": "GetSharedRegionalCertificateAuthority", "httpRequest": http_request, "metadata": http_request["headers"], }, ) # Send the request - response = CloudRedisClusterRestTransport._GetCluster._get_response( + response = CloudRedisClusterRestTransport._GetSharedRegionalCertificateAuthority._get_response( self._host, metadata, query_params, @@ -3387,21 +4887,29 @@ def __call__( raise core_exceptions.from_http_response(response) # Return the response - resp = cloud_redis_cluster.Cluster() - pb_resp = cloud_redis_cluster.Cluster.pb(resp) + resp = cloud_redis_cluster.SharedRegionalCertificateAuthority() + pb_resp = cloud_redis_cluster.SharedRegionalCertificateAuthority.pb(resp) json_format.Parse(response.content, pb_resp, ignore_unknown_fields=True) - resp = self._interceptor.post_get_cluster(resp) + resp = self._interceptor.post_get_shared_regional_certificate_authority( + resp + ) response_metadata = [(k, str(v)) for k, v in response.headers.items()] - resp, _ = self._interceptor.post_get_cluster_with_metadata( - resp, response_metadata + resp, _ = ( + self._interceptor.post_get_shared_regional_certificate_authority_with_metadata( + resp, response_metadata + ) ) if CLIENT_LOGGING_SUPPORTED and _LOGGER.isEnabledFor( logging.DEBUG ): # pragma: NO COVER try: - response_payload = cloud_redis_cluster.Cluster.to_json(response) + response_payload = ( + cloud_redis_cluster.SharedRegionalCertificateAuthority.to_json( + response + ) + ) except: response_payload = None http_response = { @@ -3410,22 +4918,22 @@ def __call__( "status": response.status_code, } _LOGGER.debug( - "Received response for google.cloud.redis.cluster_v1beta1.CloudRedisClusterClient.get_cluster", + "Received response for google.cloud.redis.cluster_v1beta1.CloudRedisClusterClient.get_shared_regional_certificate_authority", extra={ "serviceName": "google.cloud.redis.cluster.v1beta1.CloudRedisCluster", - "rpcName": "GetCluster", + "rpcName": "GetSharedRegionalCertificateAuthority", "metadata": http_response["headers"], "httpResponse": http_response, }, ) return resp - class _GetClusterCertificateAuthority( - _BaseCloudRedisClusterRestTransport._BaseGetClusterCertificateAuthority, + class _GetTokenAuthUser( + _BaseCloudRedisClusterRestTransport._BaseGetTokenAuthUser, CloudRedisClusterRestStub, ): def __hash__(self): - return hash("CloudRedisClusterRestTransport.GetClusterCertificateAuthority") + return hash("CloudRedisClusterRestTransport.GetTokenAuthUser") @staticmethod def _get_response( @@ -3451,42 +4959,42 @@ def _get_response( def __call__( self, - request: cloud_redis_cluster.GetClusterCertificateAuthorityRequest, + request: cloud_redis_cluster.GetTokenAuthUserRequest, *, retry: OptionalRetry = gapic_v1.method.DEFAULT, timeout: Optional[float] = None, metadata: Sequence[Tuple[str, Union[str, bytes]]] = (), - ) -> cloud_redis_cluster.CertificateAuthority: - r"""Call the get cluster certificate - authority method over HTTP. + ) -> cloud_redis_cluster.TokenAuthUser: + r"""Call the get token auth user method over HTTP. - Args: - request (~.cloud_redis_cluster.GetClusterCertificateAuthorityRequest): - The request object. Request for - [GetClusterCertificateAuthorityRequest][CloudRedis.GetClusterCertificateAuthorityRequest]. - 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`. + Args: + request (~.cloud_redis_cluster.GetTokenAuthUserRequest): + The request object. Request message for [GetTokenAuthUser][]. + 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: + ~.cloud_redis_cluster.TokenAuthUser: + Represents a token based auth user + for the cluster. - Returns: - ~.cloud_redis_cluster.CertificateAuthority: - Redis cluster certificate authority """ - http_options = _BaseCloudRedisClusterRestTransport._BaseGetClusterCertificateAuthority._get_http_options() - request, metadata = self._interceptor.pre_get_cluster_certificate_authority( + http_options = _BaseCloudRedisClusterRestTransport._BaseGetTokenAuthUser._get_http_options() + request, metadata = self._interceptor.pre_get_token_auth_user( request, metadata ) transcoded_request, body, query_params = transcode_request( http_options, request, required_fields_default_values=getattr( - _BaseCloudRedisClusterRestTransport._BaseGetClusterCertificateAuthority, - "_BaseGetClusterCertificateAuthority__REQUIRED_FIELDS_DEFAULT_VALUES", + _BaseCloudRedisClusterRestTransport._BaseGetTokenAuthUser, + "_BaseGetTokenAuthUser__REQUIRED_FIELDS_DEFAULT_VALUES", None, ), rest_numeric_enums=True, @@ -3510,17 +5018,17 @@ def __call__( "headers": dict(metadata), } _LOGGER.debug( - f"Sending request for google.cloud.redis.cluster_v1beta1.CloudRedisClusterClient.GetClusterCertificateAuthority", + f"Sending request for google.cloud.redis.cluster_v1beta1.CloudRedisClusterClient.GetTokenAuthUser", extra={ "serviceName": "google.cloud.redis.cluster.v1beta1.CloudRedisCluster", - "rpcName": "GetClusterCertificateAuthority", + "rpcName": "GetTokenAuthUser", "httpRequest": http_request, "metadata": http_request["headers"], }, ) # Send the request - response = CloudRedisClusterRestTransport._GetClusterCertificateAuthority._get_response( + response = CloudRedisClusterRestTransport._GetTokenAuthUser._get_response( self._host, metadata, query_params, @@ -3535,23 +5043,21 @@ def __call__( raise core_exceptions.from_http_response(response) # Return the response - resp = cloud_redis_cluster.CertificateAuthority() - pb_resp = cloud_redis_cluster.CertificateAuthority.pb(resp) + resp = cloud_redis_cluster.TokenAuthUser() + pb_resp = cloud_redis_cluster.TokenAuthUser.pb(resp) json_format.Parse(response.content, pb_resp, ignore_unknown_fields=True) - resp = self._interceptor.post_get_cluster_certificate_authority(resp) + resp = self._interceptor.post_get_token_auth_user(resp) response_metadata = [(k, str(v)) for k, v in response.headers.items()] - resp, _ = ( - self._interceptor.post_get_cluster_certificate_authority_with_metadata( - resp, response_metadata - ) + resp, _ = self._interceptor.post_get_token_auth_user_with_metadata( + resp, response_metadata ) if CLIENT_LOGGING_SUPPORTED and _LOGGER.isEnabledFor( logging.DEBUG ): # pragma: NO COVER try: - response_payload = cloud_redis_cluster.CertificateAuthority.to_json( + response_payload = cloud_redis_cluster.TokenAuthUser.to_json( response ) except: @@ -3562,24 +5068,22 @@ def __call__( "status": response.status_code, } _LOGGER.debug( - "Received response for google.cloud.redis.cluster_v1beta1.CloudRedisClusterClient.get_cluster_certificate_authority", + "Received response for google.cloud.redis.cluster_v1beta1.CloudRedisClusterClient.get_token_auth_user", extra={ "serviceName": "google.cloud.redis.cluster.v1beta1.CloudRedisCluster", - "rpcName": "GetClusterCertificateAuthority", + "rpcName": "GetTokenAuthUser", "metadata": http_response["headers"], "httpResponse": http_response, }, ) return resp - class _GetSharedRegionalCertificateAuthority( - _BaseCloudRedisClusterRestTransport._BaseGetSharedRegionalCertificateAuthority, + class _ListAclPolicies( + _BaseCloudRedisClusterRestTransport._BaseListAclPolicies, CloudRedisClusterRestStub, ): def __hash__(self): - return hash( - "CloudRedisClusterRestTransport.GetSharedRegionalCertificateAuthority" - ) + return hash("CloudRedisClusterRestTransport.ListAclPolicies") @staticmethod def _get_response( @@ -3605,44 +5109,40 @@ def _get_response( def __call__( self, - request: cloud_redis_cluster.GetSharedRegionalCertificateAuthorityRequest, + request: cloud_redis_cluster.ListAclPoliciesRequest, *, retry: OptionalRetry = gapic_v1.method.DEFAULT, timeout: Optional[float] = None, metadata: Sequence[Tuple[str, Union[str, bytes]]] = (), - ) -> cloud_redis_cluster.SharedRegionalCertificateAuthority: - r"""Call the get shared regional - certificate authority method over HTTP. + ) -> cloud_redis_cluster.ListAclPoliciesResponse: + r"""Call the list acl policies method over HTTP. - Args: - request (~.cloud_redis_cluster.GetSharedRegionalCertificateAuthorityRequest): - The request object. Request for - [GetSharedRegionalCertificateAuthority][CloudRedis.GetSharedRegionalCertificateAuthority]. - 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`. + Args: + request (~.cloud_redis_cluster.ListAclPoliciesRequest): + The request object. Request for ``ListAclPolicies``. + 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: - ~.cloud_redis_cluster.SharedRegionalCertificateAuthority: - Shared regional certificate authority + Returns: + ~.cloud_redis_cluster.ListAclPoliciesResponse: + Response for ``ListAclPolicies``. """ - http_options = _BaseCloudRedisClusterRestTransport._BaseGetSharedRegionalCertificateAuthority._get_http_options() - request, metadata = ( - self._interceptor.pre_get_shared_regional_certificate_authority( - request, metadata - ) + http_options = _BaseCloudRedisClusterRestTransport._BaseListAclPolicies._get_http_options() + request, metadata = self._interceptor.pre_list_acl_policies( + request, metadata ) transcoded_request, body, query_params = transcode_request( http_options, request, required_fields_default_values=getattr( - _BaseCloudRedisClusterRestTransport._BaseGetSharedRegionalCertificateAuthority, - "_BaseGetSharedRegionalCertificateAuthority__REQUIRED_FIELDS_DEFAULT_VALUES", + _BaseCloudRedisClusterRestTransport._BaseListAclPolicies, + "_BaseListAclPolicies__REQUIRED_FIELDS_DEFAULT_VALUES", None, ), rest_numeric_enums=True, @@ -3666,17 +5166,17 @@ def __call__( "headers": dict(metadata), } _LOGGER.debug( - f"Sending request for google.cloud.redis.cluster_v1beta1.CloudRedisClusterClient.GetSharedRegionalCertificateAuthority", + f"Sending request for google.cloud.redis.cluster_v1beta1.CloudRedisClusterClient.ListAclPolicies", extra={ "serviceName": "google.cloud.redis.cluster.v1beta1.CloudRedisCluster", - "rpcName": "GetSharedRegionalCertificateAuthority", + "rpcName": "ListAclPolicies", "httpRequest": http_request, "metadata": http_request["headers"], }, ) # Send the request - response = CloudRedisClusterRestTransport._GetSharedRegionalCertificateAuthority._get_response( + response = CloudRedisClusterRestTransport._ListAclPolicies._get_response( self._host, metadata, query_params, @@ -3691,28 +5191,22 @@ def __call__( raise core_exceptions.from_http_response(response) # Return the response - resp = cloud_redis_cluster.SharedRegionalCertificateAuthority() - pb_resp = cloud_redis_cluster.SharedRegionalCertificateAuthority.pb(resp) + resp = cloud_redis_cluster.ListAclPoliciesResponse() + pb_resp = cloud_redis_cluster.ListAclPoliciesResponse.pb(resp) json_format.Parse(response.content, pb_resp, ignore_unknown_fields=True) - resp = self._interceptor.post_get_shared_regional_certificate_authority( - resp - ) + resp = self._interceptor.post_list_acl_policies(resp) response_metadata = [(k, str(v)) for k, v in response.headers.items()] - resp, _ = ( - self._interceptor.post_get_shared_regional_certificate_authority_with_metadata( - resp, response_metadata - ) + resp, _ = self._interceptor.post_list_acl_policies_with_metadata( + resp, response_metadata ) if CLIENT_LOGGING_SUPPORTED and _LOGGER.isEnabledFor( logging.DEBUG ): # pragma: NO COVER try: response_payload = ( - cloud_redis_cluster.SharedRegionalCertificateAuthority.to_json( - response - ) + cloud_redis_cluster.ListAclPoliciesResponse.to_json(response) ) except: response_payload = None @@ -3722,22 +5216,22 @@ def __call__( "status": response.status_code, } _LOGGER.debug( - "Received response for google.cloud.redis.cluster_v1beta1.CloudRedisClusterClient.get_shared_regional_certificate_authority", + "Received response for google.cloud.redis.cluster_v1beta1.CloudRedisClusterClient.list_acl_policies", extra={ "serviceName": "google.cloud.redis.cluster.v1beta1.CloudRedisCluster", - "rpcName": "GetSharedRegionalCertificateAuthority", + "rpcName": "ListAclPolicies", "metadata": http_response["headers"], "httpResponse": http_response, }, ) return resp - class _ListAclPolicies( - _BaseCloudRedisClusterRestTransport._BaseListAclPolicies, + class _ListAclPolicyRevisions( + _BaseCloudRedisClusterRestTransport._BaseListAclPolicyRevisions, CloudRedisClusterRestStub, ): def __hash__(self): - return hash("CloudRedisClusterRestTransport.ListAclPolicies") + return hash("CloudRedisClusterRestTransport.ListAclPolicyRevisions") @staticmethod def _get_response( @@ -3763,17 +5257,17 @@ def _get_response( def __call__( self, - request: cloud_redis_cluster.ListAclPoliciesRequest, + request: cloud_redis_cluster.ListAclPolicyRevisionsRequest, *, retry: OptionalRetry = gapic_v1.method.DEFAULT, timeout: Optional[float] = None, metadata: Sequence[Tuple[str, Union[str, bytes]]] = (), - ) -> cloud_redis_cluster.ListAclPoliciesResponse: - r"""Call the list acl policies method over HTTP. + ) -> cloud_redis_cluster.ListAclPolicyRevisionsResponse: + r"""Call the list acl policy revisions method over HTTP. Args: - request (~.cloud_redis_cluster.ListAclPoliciesRequest): - The request object. Request for ``ListAclPolicies``. + request (~.cloud_redis_cluster.ListAclPolicyRevisionsRequest): + The request object. Request for ``ListAclPolicyRevisions``. retry (google.api_core.retry.Retry): Designation of what errors, if any, should be retried. timeout (float): The timeout for this request. @@ -3783,20 +5277,20 @@ def __call__( be of type `bytes`. Returns: - ~.cloud_redis_cluster.ListAclPoliciesResponse: - Response for ``ListAclPolicies``. + ~.cloud_redis_cluster.ListAclPolicyRevisionsResponse: + Response for ``ListAclPolicyRevisions``. """ - http_options = _BaseCloudRedisClusterRestTransport._BaseListAclPolicies._get_http_options() - request, metadata = self._interceptor.pre_list_acl_policies( + http_options = _BaseCloudRedisClusterRestTransport._BaseListAclPolicyRevisions._get_http_options() + request, metadata = self._interceptor.pre_list_acl_policy_revisions( request, metadata ) transcoded_request, body, query_params = transcode_request( http_options, request, required_fields_default_values=getattr( - _BaseCloudRedisClusterRestTransport._BaseListAclPolicies, - "_BaseListAclPolicies__REQUIRED_FIELDS_DEFAULT_VALUES", + _BaseCloudRedisClusterRestTransport._BaseListAclPolicyRevisions, + "_BaseListAclPolicyRevisions__REQUIRED_FIELDS_DEFAULT_VALUES", None, ), rest_numeric_enums=True, @@ -3820,23 +5314,25 @@ def __call__( "headers": dict(metadata), } _LOGGER.debug( - f"Sending request for google.cloud.redis.cluster_v1beta1.CloudRedisClusterClient.ListAclPolicies", + f"Sending request for google.cloud.redis.cluster_v1beta1.CloudRedisClusterClient.ListAclPolicyRevisions", extra={ "serviceName": "google.cloud.redis.cluster.v1beta1.CloudRedisCluster", - "rpcName": "ListAclPolicies", + "rpcName": "ListAclPolicyRevisions", "httpRequest": http_request, "metadata": http_request["headers"], }, ) # Send the request - response = CloudRedisClusterRestTransport._ListAclPolicies._get_response( - self._host, - metadata, - query_params, - self._session, - timeout, - transcoded_request, + response = ( + CloudRedisClusterRestTransport._ListAclPolicyRevisions._get_response( + self._host, + metadata, + query_params, + self._session, + timeout, + transcoded_request, + ) ) # In case of error, raise the appropriate core_exceptions.GoogleAPICallError exception @@ -3845,14 +5341,14 @@ def __call__( raise core_exceptions.from_http_response(response) # Return the response - resp = cloud_redis_cluster.ListAclPoliciesResponse() - pb_resp = cloud_redis_cluster.ListAclPoliciesResponse.pb(resp) + resp = cloud_redis_cluster.ListAclPolicyRevisionsResponse() + pb_resp = cloud_redis_cluster.ListAclPolicyRevisionsResponse.pb(resp) json_format.Parse(response.content, pb_resp, ignore_unknown_fields=True) - resp = self._interceptor.post_list_acl_policies(resp) + resp = self._interceptor.post_list_acl_policy_revisions(resp) response_metadata = [(k, str(v)) for k, v in response.headers.items()] - resp, _ = self._interceptor.post_list_acl_policies_with_metadata( + resp, _ = self._interceptor.post_list_acl_policy_revisions_with_metadata( resp, response_metadata ) if CLIENT_LOGGING_SUPPORTED and _LOGGER.isEnabledFor( @@ -3860,7 +5356,9 @@ def __call__( ): # pragma: NO COVER try: response_payload = ( - cloud_redis_cluster.ListAclPoliciesResponse.to_json(response) + cloud_redis_cluster.ListAclPolicyRevisionsResponse.to_json( + response + ) ) except: response_payload = None @@ -3870,22 +5368,22 @@ def __call__( "status": response.status_code, } _LOGGER.debug( - "Received response for google.cloud.redis.cluster_v1beta1.CloudRedisClusterClient.list_acl_policies", + "Received response for google.cloud.redis.cluster_v1beta1.CloudRedisClusterClient.list_acl_policy_revisions", extra={ "serviceName": "google.cloud.redis.cluster.v1beta1.CloudRedisCluster", - "rpcName": "ListAclPolicies", + "rpcName": "ListAclPolicyRevisions", "metadata": http_response["headers"], "httpResponse": http_response, }, ) return resp - class _ListAclPolicyRevisions( - _BaseCloudRedisClusterRestTransport._BaseListAclPolicyRevisions, + class _ListAuthTokens( + _BaseCloudRedisClusterRestTransport._BaseListAuthTokens, CloudRedisClusterRestStub, ): def __hash__(self): - return hash("CloudRedisClusterRestTransport.ListAclPolicyRevisions") + return hash("CloudRedisClusterRestTransport.ListAuthTokens") @staticmethod def _get_response( @@ -3911,17 +5409,17 @@ def _get_response( def __call__( self, - request: cloud_redis_cluster.ListAclPolicyRevisionsRequest, + request: cloud_redis_cluster.ListAuthTokensRequest, *, retry: OptionalRetry = gapic_v1.method.DEFAULT, timeout: Optional[float] = None, metadata: Sequence[Tuple[str, Union[str, bytes]]] = (), - ) -> cloud_redis_cluster.ListAclPolicyRevisionsResponse: - r"""Call the list acl policy revisions method over HTTP. + ) -> cloud_redis_cluster.ListAuthTokensResponse: + r"""Call the list auth tokens method over HTTP. Args: - request (~.cloud_redis_cluster.ListAclPolicyRevisionsRequest): - The request object. Request for ``ListAclPolicyRevisions``. + request (~.cloud_redis_cluster.ListAuthTokensRequest): + The request object. Request message for [ListAuthTokens][]. retry (google.api_core.retry.Retry): Designation of what errors, if any, should be retried. timeout (float): The timeout for this request. @@ -3931,20 +5429,20 @@ def __call__( be of type `bytes`. Returns: - ~.cloud_redis_cluster.ListAclPolicyRevisionsResponse: - Response for ``ListAclPolicyRevisions``. + ~.cloud_redis_cluster.ListAuthTokensResponse: + Response message for [ListAuthTokens][]. """ - http_options = _BaseCloudRedisClusterRestTransport._BaseListAclPolicyRevisions._get_http_options() - request, metadata = self._interceptor.pre_list_acl_policy_revisions( + http_options = _BaseCloudRedisClusterRestTransport._BaseListAuthTokens._get_http_options() + request, metadata = self._interceptor.pre_list_auth_tokens( request, metadata ) transcoded_request, body, query_params = transcode_request( http_options, request, required_fields_default_values=getattr( - _BaseCloudRedisClusterRestTransport._BaseListAclPolicyRevisions, - "_BaseListAclPolicyRevisions__REQUIRED_FIELDS_DEFAULT_VALUES", + _BaseCloudRedisClusterRestTransport._BaseListAuthTokens, + "_BaseListAuthTokens__REQUIRED_FIELDS_DEFAULT_VALUES", None, ), rest_numeric_enums=True, @@ -3968,25 +5466,23 @@ def __call__( "headers": dict(metadata), } _LOGGER.debug( - f"Sending request for google.cloud.redis.cluster_v1beta1.CloudRedisClusterClient.ListAclPolicyRevisions", + f"Sending request for google.cloud.redis.cluster_v1beta1.CloudRedisClusterClient.ListAuthTokens", extra={ "serviceName": "google.cloud.redis.cluster.v1beta1.CloudRedisCluster", - "rpcName": "ListAclPolicyRevisions", + "rpcName": "ListAuthTokens", "httpRequest": http_request, "metadata": http_request["headers"], }, ) # Send the request - response = ( - CloudRedisClusterRestTransport._ListAclPolicyRevisions._get_response( - self._host, - metadata, - query_params, - self._session, - timeout, - transcoded_request, - ) + response = CloudRedisClusterRestTransport._ListAuthTokens._get_response( + self._host, + metadata, + query_params, + self._session, + timeout, + transcoded_request, ) # In case of error, raise the appropriate core_exceptions.GoogleAPICallError exception @@ -3995,14 +5491,14 @@ def __call__( raise core_exceptions.from_http_response(response) # Return the response - resp = cloud_redis_cluster.ListAclPolicyRevisionsResponse() - pb_resp = cloud_redis_cluster.ListAclPolicyRevisionsResponse.pb(resp) + resp = cloud_redis_cluster.ListAuthTokensResponse() + pb_resp = cloud_redis_cluster.ListAuthTokensResponse.pb(resp) json_format.Parse(response.content, pb_resp, ignore_unknown_fields=True) - resp = self._interceptor.post_list_acl_policy_revisions(resp) + resp = self._interceptor.post_list_auth_tokens(resp) response_metadata = [(k, str(v)) for k, v in response.headers.items()] - resp, _ = self._interceptor.post_list_acl_policy_revisions_with_metadata( + resp, _ = self._interceptor.post_list_auth_tokens_with_metadata( resp, response_metadata ) if CLIENT_LOGGING_SUPPORTED and _LOGGER.isEnabledFor( @@ -4010,9 +5506,7 @@ def __call__( ): # pragma: NO COVER try: response_payload = ( - cloud_redis_cluster.ListAclPolicyRevisionsResponse.to_json( - response - ) + cloud_redis_cluster.ListAuthTokensResponse.to_json(response) ) except: response_payload = None @@ -4022,10 +5516,10 @@ def __call__( "status": response.status_code, } _LOGGER.debug( - "Received response for google.cloud.redis.cluster_v1beta1.CloudRedisClusterClient.list_acl_policy_revisions", + "Received response for google.cloud.redis.cluster_v1beta1.CloudRedisClusterClient.list_auth_tokens", extra={ "serviceName": "google.cloud.redis.cluster.v1beta1.CloudRedisCluster", - "rpcName": "ListAclPolicyRevisions", + "rpcName": "ListAuthTokens", "metadata": http_response["headers"], "httpResponse": http_response, }, @@ -4476,6 +5970,154 @@ def __call__( ) return resp + class _ListTokenAuthUsers( + _BaseCloudRedisClusterRestTransport._BaseListTokenAuthUsers, + CloudRedisClusterRestStub, + ): + def __hash__(self): + return hash("CloudRedisClusterRestTransport.ListTokenAuthUsers") + + @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: cloud_redis_cluster.ListTokenAuthUsersRequest, + *, + retry: OptionalRetry = gapic_v1.method.DEFAULT, + timeout: Optional[float] = None, + metadata: Sequence[Tuple[str, Union[str, bytes]]] = (), + ) -> cloud_redis_cluster.ListTokenAuthUsersResponse: + r"""Call the list token auth users method over HTTP. + + Args: + request (~.cloud_redis_cluster.ListTokenAuthUsersRequest): + The request object. Request message for [ListTokenAuthUsers][]. + 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: + ~.cloud_redis_cluster.ListTokenAuthUsersResponse: + Response message for [ListTokenAuthUsers][]. + """ + + http_options = _BaseCloudRedisClusterRestTransport._BaseListTokenAuthUsers._get_http_options() + request, metadata = self._interceptor.pre_list_token_auth_users( + request, metadata + ) + transcoded_request, body, query_params = transcode_request( + http_options, + request, + required_fields_default_values=getattr( + _BaseCloudRedisClusterRestTransport._BaseListTokenAuthUsers, + "_BaseListTokenAuthUsers__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.redis.cluster_v1beta1.CloudRedisClusterClient.ListTokenAuthUsers", + extra={ + "serviceName": "google.cloud.redis.cluster.v1beta1.CloudRedisCluster", + "rpcName": "ListTokenAuthUsers", + "httpRequest": http_request, + "metadata": http_request["headers"], + }, + ) + + # Send the request + response = CloudRedisClusterRestTransport._ListTokenAuthUsers._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 = cloud_redis_cluster.ListTokenAuthUsersResponse() + pb_resp = cloud_redis_cluster.ListTokenAuthUsersResponse.pb(resp) + + json_format.Parse(response.content, pb_resp, ignore_unknown_fields=True) + + resp = self._interceptor.post_list_token_auth_users(resp) + response_metadata = [(k, str(v)) for k, v in response.headers.items()] + resp, _ = self._interceptor.post_list_token_auth_users_with_metadata( + resp, response_metadata + ) + if CLIENT_LOGGING_SUPPORTED and _LOGGER.isEnabledFor( + logging.DEBUG + ): # pragma: NO COVER + try: + response_payload = ( + cloud_redis_cluster.ListTokenAuthUsersResponse.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.redis.cluster_v1beta1.CloudRedisClusterClient.list_token_auth_users", + extra={ + "serviceName": "google.cloud.redis.cluster.v1beta1.CloudRedisCluster", + "rpcName": "ListTokenAuthUsers", + "metadata": http_response["headers"], + "httpResponse": http_response, + }, + ) + return resp + class _RescheduleClusterMaintenance( _BaseCloudRedisClusterRestTransport._BaseRescheduleClusterMaintenance, CloudRedisClusterRestStub, @@ -4925,6 +6567,24 @@ def __call__( ) return resp + @property + def add_auth_token( + self, + ) -> Callable[[cloud_redis_cluster.AddAuthTokenRequest], operations_pb2.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._AddAuthToken(self._session, self._host, self._interceptor) # type: ignore + + @property + def add_token_auth_user( + self, + ) -> Callable[ + [cloud_redis_cluster.AddTokenAuthUserRequest], operations_pb2.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._AddTokenAuthUser(self._session, self._host, self._interceptor) # type: ignore + @property def backup_cluster( self, @@ -4961,6 +6621,16 @@ def delete_acl_policy( # In C++ this would require a dynamic_cast return self._DeleteAclPolicy(self._session, self._host, self._interceptor) # type: ignore + @property + def delete_auth_token( + self, + ) -> Callable[ + [cloud_redis_cluster.DeleteAuthTokenRequest], operations_pb2.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._DeleteAuthToken(self._session, self._host, self._interceptor) # type: ignore + @property def delete_backup( self, @@ -4977,6 +6647,16 @@ def delete_cluster( # In C++ this would require a dynamic_cast return self._DeleteCluster(self._session, self._host, self._interceptor) # type: ignore + @property + def delete_token_auth_user( + self, + ) -> Callable[ + [cloud_redis_cluster.DeleteTokenAuthUserRequest], operations_pb2.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._DeleteTokenAuthUser(self._session, self._host, self._interceptor) # type: ignore + @property def export_backup( self, @@ -5006,6 +6686,16 @@ def get_acl_policy_revision( # In C++ this would require a dynamic_cast return self._GetAclPolicyRevision(self._session, self._host, self._interceptor) # type: ignore + @property + def get_auth_token( + self, + ) -> Callable[ + [cloud_redis_cluster.GetAuthTokenRequest], cloud_redis_cluster.AuthToken + ]: + # 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._GetAuthToken(self._session, self._host, self._interceptor) # type: ignore + @property def get_backup( self, @@ -5059,6 +6749,16 @@ def get_shared_regional_certificate_authority( self._session, self._host, self._interceptor ) # type: ignore + @property + def get_token_auth_user( + self, + ) -> Callable[ + [cloud_redis_cluster.GetTokenAuthUserRequest], cloud_redis_cluster.TokenAuthUser + ]: + # 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._GetTokenAuthUser(self._session, self._host, self._interceptor) # type: ignore + @property def list_acl_policies( self, @@ -5083,6 +6783,17 @@ def list_acl_policy_revisions( self._session, self._host, self._interceptor ) # type: ignore + @property + def list_auth_tokens( + self, + ) -> Callable[ + [cloud_redis_cluster.ListAuthTokensRequest], + cloud_redis_cluster.ListAuthTokensResponse, + ]: + # 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._ListAuthTokens(self._session, self._host, self._interceptor) # type: ignore + @property def list_backup_collections( self, @@ -5116,6 +6827,17 @@ def list_clusters( # In C++ this would require a dynamic_cast return self._ListClusters(self._session, self._host, self._interceptor) # type: ignore + @property + def list_token_auth_users( + self, + ) -> Callable[ + [cloud_redis_cluster.ListTokenAuthUsersRequest], + cloud_redis_cluster.ListTokenAuthUsersResponse, + ]: + # 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._ListTokenAuthUsers(self._session, self._host, self._interceptor) # type: ignore + @property def reschedule_cluster_maintenance( self, diff --git a/packages/google-cloud-redis-cluster/google/cloud/redis_cluster_v1beta1/services/cloud_redis_cluster/transports/rest_base.py b/packages/google-cloud-redis-cluster/google/cloud/redis_cluster_v1beta1/services/cloud_redis_cluster/transports/rest_base.py index 3b70054cee17..51885c516474 100644 --- a/packages/google-cloud-redis-cluster/google/cloud/redis_cluster_v1beta1/services/cloud_redis_cluster/transports/rest_base.py +++ b/packages/google-cloud-redis-cluster/google/cloud/redis_cluster_v1beta1/services/cloud_redis_cluster/transports/rest_base.py @@ -89,6 +89,40 @@ def __init__( api_audience=api_audience, ) + class _BaseAddAuthToken: + 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": "/v1beta1/{token_auth_user=projects/*/locations/*/clusters/*/tokenAuthUsers/*}:addAuthToken", + "body": "*", + }, + ] + return http_options + + class _BaseAddTokenAuthUser: + 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": "/v1beta1/{cluster=projects/*/locations/*/clusters/*}:addTokenAuthUser", + "body": "*", + }, + ] + return http_options + class _BaseBackupCluster: def __hash__(self): # pragma: NO COVER return NotImplementedError("__hash__ must be implemented.") @@ -160,6 +194,22 @@ def _get_http_options(): ] return http_options + class _BaseDeleteAuthToken: + 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": "/v1beta1/{name=projects/*/locations/*/clusters/*/tokenAuthUsers/*/authTokens/*}", + }, + ] + return http_options + class _BaseDeleteBackup: def __hash__(self): # pragma: NO COVER return NotImplementedError("__hash__ must be implemented.") @@ -192,6 +242,22 @@ def _get_http_options(): ] return http_options + class _BaseDeleteTokenAuthUser: + 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": "/v1beta1/{name=projects/*/locations/*/clusters/*/tokenAuthUsers/*}", + }, + ] + return http_options + class _BaseExportBackup: def __hash__(self): # pragma: NO COVER return NotImplementedError("__hash__ must be implemented.") @@ -241,6 +307,22 @@ def _get_http_options(): ] return http_options + class _BaseGetAuthToken: + 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": "/v1beta1/{name=projects/*/locations/*/clusters/*/tokenAuthUsers/*/authTokens/*}", + }, + ] + return http_options + class _BaseGetBackup: def __hash__(self): # pragma: NO COVER return NotImplementedError("__hash__ must be implemented.") @@ -321,6 +403,22 @@ def _get_http_options(): ] return http_options + class _BaseGetTokenAuthUser: + 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": "/v1beta1/{name=projects/*/locations/*/clusters/*/tokenAuthUsers/*}", + }, + ] + return http_options + class _BaseListAclPolicies: def __hash__(self): # pragma: NO COVER return NotImplementedError("__hash__ must be implemented.") @@ -353,6 +451,22 @@ def _get_http_options(): ] return http_options + class _BaseListAuthTokens: + 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": "/v1beta1/{parent=projects/*/locations/*/clusters/*/tokenAuthUsers/*}/authTokens", + }, + ] + return http_options + class _BaseListBackupCollections: def __hash__(self): # pragma: NO COVER return NotImplementedError("__hash__ must be implemented.") @@ -401,6 +515,22 @@ def _get_http_options(): ] return http_options + class _BaseListTokenAuthUsers: + 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": "/v1beta1/{parent=projects/*/locations/*/clusters/*}/tokenAuthUsers", + }, + ] + return http_options + class _BaseRescheduleClusterMaintenance: def __hash__(self): # pragma: NO COVER return NotImplementedError("__hash__ must be implemented.") diff --git a/packages/google-cloud-redis-cluster/google/cloud/redis_cluster_v1beta1/types/__init__.py b/packages/google-cloud-redis-cluster/google/cloud/redis_cluster_v1beta1/types/__init__.py index 7be54d251a74..c9a12b0fd2e8 100644 --- a/packages/google-cloud-redis-cluster/google/cloud/redis_cluster_v1beta1/types/__init__.py +++ b/packages/google-cloud-redis-cluster/google/cloud/redis_cluster_v1beta1/types/__init__.py @@ -19,7 +19,10 @@ AclPolicyRevision, AclPolicyRevisionStatus, AclRule, + AddAuthTokenRequest, + AddTokenAuthUserRequest, AuthorizationMode, + AuthToken, AutomatedBackupConfig, Backup, BackupClusterRequest, @@ -39,28 +42,36 @@ CreateClusterRequest, CrossClusterReplicationConfig, DeleteAclPolicyRequest, + DeleteAuthTokenRequest, DeleteBackupRequest, DeleteClusterRequest, + DeleteTokenAuthUserRequest, DiscoveryEndpoint, EncryptionInfo, ExportBackupRequest, GetAclPolicyRequest, GetAclPolicyRevisionRequest, + GetAuthTokenRequest, GetBackupCollectionRequest, GetBackupRequest, GetClusterCertificateAuthorityRequest, GetClusterRequest, GetSharedRegionalCertificateAuthorityRequest, + GetTokenAuthUserRequest, ListAclPoliciesRequest, ListAclPoliciesResponse, ListAclPolicyRevisionsRequest, ListAclPolicyRevisionsResponse, + ListAuthTokensRequest, + ListAuthTokensResponse, ListBackupCollectionsRequest, ListBackupCollectionsResponse, ListBackupsRequest, ListBackupsResponse, ListClustersRequest, ListClustersResponse, + ListTokenAuthUsersRequest, + ListTokenAuthUsersResponse, NodeType, OperationMetadata, PscAutoConnection, @@ -71,6 +82,7 @@ RescheduleClusterMaintenanceRequest, ServerCaMode, SharedRegionalCertificateAuthority, + TokenAuthUser, TransitEncryptionMode, UpdateAclPolicyRequest, UpdateClusterRequest, @@ -83,6 +95,9 @@ "AclPolicyRevision", "AclPolicyRevisionStatus", "AclRule", + "AddAuthTokenRequest", + "AddTokenAuthUserRequest", + "AuthToken", "AutomatedBackupConfig", "Backup", "BackupClusterRequest", @@ -101,28 +116,36 @@ "CreateClusterRequest", "CrossClusterReplicationConfig", "DeleteAclPolicyRequest", + "DeleteAuthTokenRequest", "DeleteBackupRequest", "DeleteClusterRequest", + "DeleteTokenAuthUserRequest", "DiscoveryEndpoint", "EncryptionInfo", "ExportBackupRequest", "GetAclPolicyRequest", "GetAclPolicyRevisionRequest", + "GetAuthTokenRequest", "GetBackupCollectionRequest", "GetBackupRequest", "GetClusterCertificateAuthorityRequest", "GetClusterRequest", "GetSharedRegionalCertificateAuthorityRequest", + "GetTokenAuthUserRequest", "ListAclPoliciesRequest", "ListAclPoliciesResponse", "ListAclPolicyRevisionsRequest", "ListAclPolicyRevisionsResponse", + "ListAuthTokensRequest", + "ListAuthTokensResponse", "ListBackupCollectionsRequest", "ListBackupCollectionsResponse", "ListBackupsRequest", "ListBackupsResponse", "ListClustersRequest", "ListClustersResponse", + "ListTokenAuthUsersRequest", + "ListTokenAuthUsersResponse", "OperationMetadata", "PscAutoConnection", "PscConfig", @@ -130,6 +153,7 @@ "PscServiceAttachment", "RescheduleClusterMaintenanceRequest", "SharedRegionalCertificateAuthority", + "TokenAuthUser", "UpdateAclPolicyRequest", "UpdateClusterRequest", "ZoneDistributionConfig", diff --git a/packages/google-cloud-redis-cluster/google/cloud/redis_cluster_v1beta1/types/cloud_redis_cluster.py b/packages/google-cloud-redis-cluster/google/cloud/redis_cluster_v1beta1/types/cloud_redis_cluster.py index b9cb2146cf86..93990b37f773 100644 --- a/packages/google-cloud-redis-cluster/google/cloud/redis_cluster_v1beta1/types/cloud_redis_cluster.py +++ b/packages/google-cloud-redis-cluster/google/cloud/redis_cluster_v1beta1/types/cloud_redis_cluster.py @@ -58,6 +58,16 @@ "DeleteBackupRequest", "ExportBackupRequest", "BackupClusterRequest", + "ListTokenAuthUsersRequest", + "ListTokenAuthUsersResponse", + "GetTokenAuthUserRequest", + "ListAuthTokensRequest", + "ListAuthTokensResponse", + "GetAuthTokenRequest", + "AddTokenAuthUserRequest", + "DeleteTokenAuthUserRequest", + "AddAuthTokenRequest", + "DeleteAuthTokenRequest", "Cluster", "AclPolicyInfo", "AclPolicy", @@ -83,6 +93,8 @@ "SharedRegionalCertificateAuthority", "GetSharedRegionalCertificateAuthorityRequest", "OperationMetadata", + "TokenAuthUser", + "AuthToken", "CertificateAuthority", "ClusterPersistenceConfig", "ZoneDistributionConfig", @@ -119,11 +131,14 @@ class AuthorizationMode(proto.Enum): IAM basic authorization mode AUTH_MODE_DISABLED (2): Authorization disabled mode + AUTH_MODE_TOKEN_AUTH (3): + Token based authorization mode """ AUTH_MODE_UNSPECIFIED = 0 AUTH_MODE_IAM_AUTH = 1 AUTH_MODE_DISABLED = 2 + AUTH_MODE_TOKEN_AUTH = 3 class NodeType(proto.Enum): @@ -985,6 +1000,314 @@ class BackupClusterRequest(proto.Message): ) +class ListTokenAuthUsersRequest(proto.Message): + r"""Request message for [ListTokenAuthUsers][]. + + Attributes: + parent (str): + Required. The parent resource that this token + based auth user will be listed for. Format: + + projects/{project}/locations/{location}/clusters/{cluster} + page_size (int): + Optional. The maximum number of items to return. + + If not specified, a default value of 1000 will be used by + the service. Regardless of the page_size value, the response + may include a partial list and a caller should only rely on + response's The maximum value is 1000; values above 1000 will + be coerced to 1000. + [``next_page_token``][google.cloud.redis.cluster.v1beta1.ListTokenAuthUsersResponse.next_page_token] + to determine if there are more clusters left to be queried. + page_token (str): + Optional. The ``next_page_token`` value returned from a + previous [ListTokenAuthUsers] request, if any. + filter (str): + Optional. Expression for filtering results. + order_by (str): + Optional. Sort results by a defined order. + """ + + 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, + ) + filter: str = proto.Field( + proto.STRING, + number=4, + ) + order_by: str = proto.Field( + proto.STRING, + number=5, + ) + + +class ListTokenAuthUsersResponse(proto.Message): + r"""Response message for [ListTokenAuthUsers][]. + + Attributes: + token_auth_users (MutableSequence[google.cloud.redis_cluster_v1beta1.types.TokenAuthUser]): + A list of token auth users in the project. + next_page_token (str): + Token to retrieve the next page of results, + or empty if there are no more results in the + list. + unreachable (MutableSequence[str]): + Unordered list. Token auth users that could + not be reached. + """ + + @property + def raw_page(self): + return self + + token_auth_users: MutableSequence["TokenAuthUser"] = proto.RepeatedField( + proto.MESSAGE, + number=1, + message="TokenAuthUser", + ) + next_page_token: str = proto.Field( + proto.STRING, + number=2, + ) + unreachable: MutableSequence[str] = proto.RepeatedField( + proto.STRING, + number=3, + ) + + +class GetTokenAuthUserRequest(proto.Message): + r"""Request message for [GetTokenAuthUser][]. + + Attributes: + name (str): + Required. The name of token auth user for a token based auth + enabled cluster. Format: + projects/{project}/locations/{location}/clusters/{cluster}/tokenAuthUsers/{token_auth_user} + """ + + name: str = proto.Field( + proto.STRING, + number=1, + ) + + +class ListAuthTokensRequest(proto.Message): + r"""Request message for [ListAuthTokens][]. + + Attributes: + parent (str): + Required. The parent resource that this auth token will be + listed for. Format: + projects/{project}/locations/{location}/clusters/{cluster}/tokenAuthUsers/{token_auth_user} + page_size (int): + Optional. The maximum number of items to return. The maximum + value is 1000; values above 1000 will be coerced to 1000. If + not specified, a default value of 1000 will be used by the + service. Regardless of the page_size value, the response may + include a partial list and a caller should only rely on + response's + [``next_page_token``][google.cloud.redis.cluster.v1beta1.ListTokenAuthUsersResponse.next_page_token] + to determine if there are more clusters left to be queried. + page_token (str): + Optional. The ``next_page_token`` value returned from a + previous [ListTokenAuthUsers] request, if any. + filter (str): + Optional. Expression for filtering results. + order_by (str): + Optional. Sort results by a defined order. + """ + + 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, + ) + filter: str = proto.Field( + proto.STRING, + number=4, + ) + order_by: str = proto.Field( + proto.STRING, + number=5, + ) + + +class ListAuthTokensResponse(proto.Message): + r"""Response message for [ListAuthTokens][]. + + Attributes: + auth_tokens (MutableSequence[google.cloud.redis_cluster_v1beta1.types.AuthToken]): + A list of auth tokens in the project. + next_page_token (str): + Token to retrieve the next page of results, + or empty if there are no more results in the + list. + unreachable (MutableSequence[str]): + Unordered list. Auth tokens that could not be + reached. + """ + + @property + def raw_page(self): + return self + + auth_tokens: MutableSequence["AuthToken"] = proto.RepeatedField( + proto.MESSAGE, + number=1, + message="AuthToken", + ) + next_page_token: str = proto.Field( + proto.STRING, + number=2, + ) + unreachable: MutableSequence[str] = proto.RepeatedField( + proto.STRING, + number=3, + ) + + +class GetAuthTokenRequest(proto.Message): + r"""Request message for [GetAuthToken][]. + + Attributes: + name (str): + Required. The name of auth token for a token based auth + enabled cluster. Format: + projects/{project}/locations/{location}/clusters/{cluster}/tokenAuthUsers/{token_auth_user}/authTokens/{auth_token} + """ + + name: str = proto.Field( + proto.STRING, + number=1, + ) + + +class AddTokenAuthUserRequest(proto.Message): + r"""Request message for [AddTokenAuthUser][]. + + Attributes: + cluster (str): + Required. The cluster resource that this + token auth user will be added for. Format: + projects/{project}/locations/{location}/clusters/{cluster} + token_auth_user (str): + Required. The id of the token auth user to + add. + """ + + cluster: str = proto.Field( + proto.STRING, + number=1, + ) + token_auth_user: str = proto.Field( + proto.STRING, + number=2, + ) + + +class DeleteTokenAuthUserRequest(proto.Message): + r"""Request message for [DeleteTokenAuthUser][]. + + Attributes: + name (str): + Required. The name of the token auth user to delete. Format: + projects/{project}/locations/{location}/clusters/{cluster}/tokenAuthUsers/{token_auth_user} + request_id (str): + Optional. An optional request ID to identify + requests. Specify a unique request ID so that if + you must retry your request, the server will + know to ignore the request if it has already + been completed. The server will guarantee that + for at least 60 minutes after the first request. + + For example, consider a situation where you make + an initial request and the request times out. If + you make the request again with the same request + ID, the server can check if original operation + with the same request ID was received, and if + so, will ignore the second request. This + prevents clients from accidentally creating + duplicate commitments. + + The request ID must be a valid UUID with the + exception that zero UUID is not supported + (00000000-0000-0000-0000-000000000000). + force (bool): + Optional. If set to true, any child auth + tokens of this user will also be deleted. + Otherwise, the request will only work if the + user has no auth tokens. + """ + + name: str = proto.Field( + proto.STRING, + number=1, + ) + request_id: str = proto.Field( + proto.STRING, + number=2, + ) + force: bool = proto.Field( + proto.BOOL, + number=3, + ) + + +class AddAuthTokenRequest(proto.Message): + r"""Request message for [AddAuthToken][]. + + Attributes: + token_auth_user (str): + Required. The name of the token auth user resource that this + auth token will be added for. Format: + projects/{project}/locations/{location}/clusters/{cluster}/tokenAuthUsers/{token_auth_user} + auth_token (google.cloud.redis_cluster_v1beta1.types.AuthToken): + Required. The auth token to add. + """ + + token_auth_user: str = proto.Field( + proto.STRING, + number=1, + ) + auth_token: "AuthToken" = proto.Field( + proto.MESSAGE, + number=2, + message="AuthToken", + ) + + +class DeleteAuthTokenRequest(proto.Message): + r"""Request message for [DeleteAuthToken][]. + + Attributes: + name (str): + Required. The name of the token auth user resource that this + auth token will be deleted from. Format: + projects/{project}/locations/{location}/clusters/{cluster}/tokenAuthUsers/{token_auth_user}/authTokens/{auth_token} + """ + + name: str = proto.Field( + proto.STRING, + number=1, + ) + + class Cluster(proto.Message): r"""A cluster instance. @@ -2699,6 +3022,110 @@ class OperationMetadata(proto.Message): ) +class TokenAuthUser(proto.Message): + r"""Represents a token based auth user for the cluster. + + Attributes: + name (str): + Identifier. The resource name of the token based auth user. + Format: + projects/{project}/locations/{location}/clusters/{cluster}/tokenAuthUsers/{token_auth_user} + state (google.cloud.redis_cluster_v1beta1.types.TokenAuthUser.State): + Output only. The state of the token based + auth user. + """ + + class State(proto.Enum): + r"""Represents the different states of a token based auth user. + New values may be added in the future. + + Values: + STATE_UNSPECIFIED (0): + Not set. + ACTIVE (1): + The auth user is active. + CREATING (2): + The auth user is being created. + UPDATING (3): + The auth user is being updated. + DELETING (4): + The auth user is being deleted. + """ + + STATE_UNSPECIFIED = 0 + ACTIVE = 1 + CREATING = 2 + UPDATING = 3 + DELETING = 4 + + name: str = proto.Field( + proto.STRING, + number=1, + ) + state: State = proto.Field( + proto.ENUM, + number=2, + enum=State, + ) + + +class AuthToken(proto.Message): + r"""Auth token for the cluster. + + Attributes: + name (str): + Identifier. Name of the auth token. Format: + projects/{project}/locations/{location}/clusters/{cluster}/tokenAuthUsers/{token_auth_user}/authTokens/{auth_token} + token (str): + Output only. The service generated + authentication token used to connect to the + Redis cluster. + create_time (google.protobuf.timestamp_pb2.Timestamp): + Output only. Create time of the auth token. + state (google.cloud.redis_cluster_v1beta1.types.AuthToken.State): + Output only. State of the auth token. + """ + + class State(proto.Enum): + r"""Represents the different states of an auth token. + New values may be added in the future. + + Values: + STATE_UNSPECIFIED (0): + Not set. + ACTIVE (1): + The auth token is active. + CREATING (2): + The auth token is being created. + DELETING (3): + The auth token is being deleted. + """ + + STATE_UNSPECIFIED = 0 + ACTIVE = 1 + CREATING = 2 + DELETING = 3 + + name: str = proto.Field( + proto.STRING, + number=1, + ) + token: str = proto.Field( + proto.STRING, + number=2, + ) + create_time: timestamp_pb2.Timestamp = proto.Field( + proto.MESSAGE, + number=3, + message=timestamp_pb2.Timestamp, + ) + state: State = proto.Field( + proto.ENUM, + number=4, + enum=State, + ) + + class CertificateAuthority(proto.Message): r"""Redis cluster certificate authority diff --git a/packages/google-cloud-redis-cluster/samples/generated_samples/redis_v1beta1_generated_cloud_redis_cluster_add_auth_token_async.py b/packages/google-cloud-redis-cluster/samples/generated_samples/redis_v1beta1_generated_cloud_redis_cluster_add_auth_token_async.py new file mode 100644 index 000000000000..16485974f2fb --- /dev/null +++ b/packages/google-cloud-redis-cluster/samples/generated_samples/redis_v1beta1_generated_cloud_redis_cluster_add_auth_token_async.py @@ -0,0 +1,57 @@ +# -*- 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 AddAuthToken +# 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-redis-cluster + + +# [START redis_v1beta1_generated_CloudRedisCluster_AddAuthToken_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 redis_cluster_v1beta1 + + +async def sample_add_auth_token(): + # Create a client + client = redis_cluster_v1beta1.CloudRedisClusterAsyncClient() + + # Initialize request argument(s) + request = redis_cluster_v1beta1.AddAuthTokenRequest( + token_auth_user="token_auth_user_value", + ) + + # Make the request + operation = await client.add_auth_token(request=request) + + print("Waiting for operation to complete...") + + response = await operation.result() + + # Handle the response + print(response) + + +# [END redis_v1beta1_generated_CloudRedisCluster_AddAuthToken_async] diff --git a/packages/google-cloud-redis-cluster/samples/generated_samples/redis_v1beta1_generated_cloud_redis_cluster_add_auth_token_sync.py b/packages/google-cloud-redis-cluster/samples/generated_samples/redis_v1beta1_generated_cloud_redis_cluster_add_auth_token_sync.py new file mode 100644 index 000000000000..c2fabc791614 --- /dev/null +++ b/packages/google-cloud-redis-cluster/samples/generated_samples/redis_v1beta1_generated_cloud_redis_cluster_add_auth_token_sync.py @@ -0,0 +1,57 @@ +# -*- 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 AddAuthToken +# 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-redis-cluster + + +# [START redis_v1beta1_generated_CloudRedisCluster_AddAuthToken_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 redis_cluster_v1beta1 + + +def sample_add_auth_token(): + # Create a client + client = redis_cluster_v1beta1.CloudRedisClusterClient() + + # Initialize request argument(s) + request = redis_cluster_v1beta1.AddAuthTokenRequest( + token_auth_user="token_auth_user_value", + ) + + # Make the request + operation = client.add_auth_token(request=request) + + print("Waiting for operation to complete...") + + response = operation.result() + + # Handle the response + print(response) + + +# [END redis_v1beta1_generated_CloudRedisCluster_AddAuthToken_sync] diff --git a/packages/google-cloud-redis-cluster/samples/generated_samples/redis_v1beta1_generated_cloud_redis_cluster_add_token_auth_user_async.py b/packages/google-cloud-redis-cluster/samples/generated_samples/redis_v1beta1_generated_cloud_redis_cluster_add_token_auth_user_async.py new file mode 100644 index 000000000000..90d3ffcbefaf --- /dev/null +++ b/packages/google-cloud-redis-cluster/samples/generated_samples/redis_v1beta1_generated_cloud_redis_cluster_add_token_auth_user_async.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. +# +# Generated code. DO NOT EDIT! +# +# Snippet for AddTokenAuthUser +# 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-redis-cluster + + +# [START redis_v1beta1_generated_CloudRedisCluster_AddTokenAuthUser_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 redis_cluster_v1beta1 + + +async def sample_add_token_auth_user(): + # Create a client + client = redis_cluster_v1beta1.CloudRedisClusterAsyncClient() + + # Initialize request argument(s) + request = redis_cluster_v1beta1.AddTokenAuthUserRequest( + cluster="cluster_value", + token_auth_user="token_auth_user_value", + ) + + # Make the request + operation = await client.add_token_auth_user(request=request) + + print("Waiting for operation to complete...") + + response = await operation.result() + + # Handle the response + print(response) + + +# [END redis_v1beta1_generated_CloudRedisCluster_AddTokenAuthUser_async] diff --git a/packages/google-cloud-redis-cluster/samples/generated_samples/redis_v1beta1_generated_cloud_redis_cluster_add_token_auth_user_sync.py b/packages/google-cloud-redis-cluster/samples/generated_samples/redis_v1beta1_generated_cloud_redis_cluster_add_token_auth_user_sync.py new file mode 100644 index 000000000000..cabd2024754d --- /dev/null +++ b/packages/google-cloud-redis-cluster/samples/generated_samples/redis_v1beta1_generated_cloud_redis_cluster_add_token_auth_user_sync.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. +# +# Generated code. DO NOT EDIT! +# +# Snippet for AddTokenAuthUser +# 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-redis-cluster + + +# [START redis_v1beta1_generated_CloudRedisCluster_AddTokenAuthUser_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 redis_cluster_v1beta1 + + +def sample_add_token_auth_user(): + # Create a client + client = redis_cluster_v1beta1.CloudRedisClusterClient() + + # Initialize request argument(s) + request = redis_cluster_v1beta1.AddTokenAuthUserRequest( + cluster="cluster_value", + token_auth_user="token_auth_user_value", + ) + + # Make the request + operation = client.add_token_auth_user(request=request) + + print("Waiting for operation to complete...") + + response = operation.result() + + # Handle the response + print(response) + + +# [END redis_v1beta1_generated_CloudRedisCluster_AddTokenAuthUser_sync] diff --git a/packages/google-cloud-redis-cluster/samples/generated_samples/redis_v1beta1_generated_cloud_redis_cluster_delete_auth_token_async.py b/packages/google-cloud-redis-cluster/samples/generated_samples/redis_v1beta1_generated_cloud_redis_cluster_delete_auth_token_async.py new file mode 100644 index 000000000000..d5d5a40e84ca --- /dev/null +++ b/packages/google-cloud-redis-cluster/samples/generated_samples/redis_v1beta1_generated_cloud_redis_cluster_delete_auth_token_async.py @@ -0,0 +1,57 @@ +# -*- 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 DeleteAuthToken +# 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-redis-cluster + + +# [START redis_v1beta1_generated_CloudRedisCluster_DeleteAuthToken_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 redis_cluster_v1beta1 + + +async def sample_delete_auth_token(): + # Create a client + client = redis_cluster_v1beta1.CloudRedisClusterAsyncClient() + + # Initialize request argument(s) + request = redis_cluster_v1beta1.DeleteAuthTokenRequest( + name="name_value", + ) + + # Make the request + operation = await client.delete_auth_token(request=request) + + print("Waiting for operation to complete...") + + response = await operation.result() + + # Handle the response + print(response) + + +# [END redis_v1beta1_generated_CloudRedisCluster_DeleteAuthToken_async] diff --git a/packages/google-cloud-redis-cluster/samples/generated_samples/redis_v1beta1_generated_cloud_redis_cluster_delete_auth_token_sync.py b/packages/google-cloud-redis-cluster/samples/generated_samples/redis_v1beta1_generated_cloud_redis_cluster_delete_auth_token_sync.py new file mode 100644 index 000000000000..4bf5ca41d959 --- /dev/null +++ b/packages/google-cloud-redis-cluster/samples/generated_samples/redis_v1beta1_generated_cloud_redis_cluster_delete_auth_token_sync.py @@ -0,0 +1,57 @@ +# -*- 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 DeleteAuthToken +# 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-redis-cluster + + +# [START redis_v1beta1_generated_CloudRedisCluster_DeleteAuthToken_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 redis_cluster_v1beta1 + + +def sample_delete_auth_token(): + # Create a client + client = redis_cluster_v1beta1.CloudRedisClusterClient() + + # Initialize request argument(s) + request = redis_cluster_v1beta1.DeleteAuthTokenRequest( + name="name_value", + ) + + # Make the request + operation = client.delete_auth_token(request=request) + + print("Waiting for operation to complete...") + + response = operation.result() + + # Handle the response + print(response) + + +# [END redis_v1beta1_generated_CloudRedisCluster_DeleteAuthToken_sync] diff --git a/packages/google-cloud-redis-cluster/samples/generated_samples/redis_v1beta1_generated_cloud_redis_cluster_delete_token_auth_user_async.py b/packages/google-cloud-redis-cluster/samples/generated_samples/redis_v1beta1_generated_cloud_redis_cluster_delete_token_auth_user_async.py new file mode 100644 index 000000000000..d1b52fa9ece5 --- /dev/null +++ b/packages/google-cloud-redis-cluster/samples/generated_samples/redis_v1beta1_generated_cloud_redis_cluster_delete_token_auth_user_async.py @@ -0,0 +1,57 @@ +# -*- 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 DeleteTokenAuthUser +# 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-redis-cluster + + +# [START redis_v1beta1_generated_CloudRedisCluster_DeleteTokenAuthUser_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 redis_cluster_v1beta1 + + +async def sample_delete_token_auth_user(): + # Create a client + client = redis_cluster_v1beta1.CloudRedisClusterAsyncClient() + + # Initialize request argument(s) + request = redis_cluster_v1beta1.DeleteTokenAuthUserRequest( + name="name_value", + ) + + # Make the request + operation = await client.delete_token_auth_user(request=request) + + print("Waiting for operation to complete...") + + response = await operation.result() + + # Handle the response + print(response) + + +# [END redis_v1beta1_generated_CloudRedisCluster_DeleteTokenAuthUser_async] diff --git a/packages/google-cloud-redis-cluster/samples/generated_samples/redis_v1beta1_generated_cloud_redis_cluster_delete_token_auth_user_sync.py b/packages/google-cloud-redis-cluster/samples/generated_samples/redis_v1beta1_generated_cloud_redis_cluster_delete_token_auth_user_sync.py new file mode 100644 index 000000000000..49c3e872272c --- /dev/null +++ b/packages/google-cloud-redis-cluster/samples/generated_samples/redis_v1beta1_generated_cloud_redis_cluster_delete_token_auth_user_sync.py @@ -0,0 +1,57 @@ +# -*- 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 DeleteTokenAuthUser +# 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-redis-cluster + + +# [START redis_v1beta1_generated_CloudRedisCluster_DeleteTokenAuthUser_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 redis_cluster_v1beta1 + + +def sample_delete_token_auth_user(): + # Create a client + client = redis_cluster_v1beta1.CloudRedisClusterClient() + + # Initialize request argument(s) + request = redis_cluster_v1beta1.DeleteTokenAuthUserRequest( + name="name_value", + ) + + # Make the request + operation = client.delete_token_auth_user(request=request) + + print("Waiting for operation to complete...") + + response = operation.result() + + # Handle the response + print(response) + + +# [END redis_v1beta1_generated_CloudRedisCluster_DeleteTokenAuthUser_sync] diff --git a/packages/google-cloud-redis-cluster/samples/generated_samples/redis_v1beta1_generated_cloud_redis_cluster_get_auth_token_async.py b/packages/google-cloud-redis-cluster/samples/generated_samples/redis_v1beta1_generated_cloud_redis_cluster_get_auth_token_async.py new file mode 100644 index 000000000000..5df5ca39f2b8 --- /dev/null +++ b/packages/google-cloud-redis-cluster/samples/generated_samples/redis_v1beta1_generated_cloud_redis_cluster_get_auth_token_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 GetAuthToken +# 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-redis-cluster + + +# [START redis_v1beta1_generated_CloudRedisCluster_GetAuthToken_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 redis_cluster_v1beta1 + + +async def sample_get_auth_token(): + # Create a client + client = redis_cluster_v1beta1.CloudRedisClusterAsyncClient() + + # Initialize request argument(s) + request = redis_cluster_v1beta1.GetAuthTokenRequest( + name="name_value", + ) + + # Make the request + response = await client.get_auth_token(request=request) + + # Handle the response + print(response) + + +# [END redis_v1beta1_generated_CloudRedisCluster_GetAuthToken_async] diff --git a/packages/google-cloud-redis-cluster/samples/generated_samples/redis_v1beta1_generated_cloud_redis_cluster_get_auth_token_sync.py b/packages/google-cloud-redis-cluster/samples/generated_samples/redis_v1beta1_generated_cloud_redis_cluster_get_auth_token_sync.py new file mode 100644 index 000000000000..75de03c99f58 --- /dev/null +++ b/packages/google-cloud-redis-cluster/samples/generated_samples/redis_v1beta1_generated_cloud_redis_cluster_get_auth_token_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 GetAuthToken +# 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-redis-cluster + + +# [START redis_v1beta1_generated_CloudRedisCluster_GetAuthToken_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 redis_cluster_v1beta1 + + +def sample_get_auth_token(): + # Create a client + client = redis_cluster_v1beta1.CloudRedisClusterClient() + + # Initialize request argument(s) + request = redis_cluster_v1beta1.GetAuthTokenRequest( + name="name_value", + ) + + # Make the request + response = client.get_auth_token(request=request) + + # Handle the response + print(response) + + +# [END redis_v1beta1_generated_CloudRedisCluster_GetAuthToken_sync] diff --git a/packages/google-cloud-redis-cluster/samples/generated_samples/redis_v1beta1_generated_cloud_redis_cluster_get_token_auth_user_async.py b/packages/google-cloud-redis-cluster/samples/generated_samples/redis_v1beta1_generated_cloud_redis_cluster_get_token_auth_user_async.py new file mode 100644 index 000000000000..b595c217e099 --- /dev/null +++ b/packages/google-cloud-redis-cluster/samples/generated_samples/redis_v1beta1_generated_cloud_redis_cluster_get_token_auth_user_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 GetTokenAuthUser +# 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-redis-cluster + + +# [START redis_v1beta1_generated_CloudRedisCluster_GetTokenAuthUser_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 redis_cluster_v1beta1 + + +async def sample_get_token_auth_user(): + # Create a client + client = redis_cluster_v1beta1.CloudRedisClusterAsyncClient() + + # Initialize request argument(s) + request = redis_cluster_v1beta1.GetTokenAuthUserRequest( + name="name_value", + ) + + # Make the request + response = await client.get_token_auth_user(request=request) + + # Handle the response + print(response) + + +# [END redis_v1beta1_generated_CloudRedisCluster_GetTokenAuthUser_async] diff --git a/packages/google-cloud-redis-cluster/samples/generated_samples/redis_v1beta1_generated_cloud_redis_cluster_get_token_auth_user_sync.py b/packages/google-cloud-redis-cluster/samples/generated_samples/redis_v1beta1_generated_cloud_redis_cluster_get_token_auth_user_sync.py new file mode 100644 index 000000000000..d5590b8172b3 --- /dev/null +++ b/packages/google-cloud-redis-cluster/samples/generated_samples/redis_v1beta1_generated_cloud_redis_cluster_get_token_auth_user_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 GetTokenAuthUser +# 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-redis-cluster + + +# [START redis_v1beta1_generated_CloudRedisCluster_GetTokenAuthUser_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 redis_cluster_v1beta1 + + +def sample_get_token_auth_user(): + # Create a client + client = redis_cluster_v1beta1.CloudRedisClusterClient() + + # Initialize request argument(s) + request = redis_cluster_v1beta1.GetTokenAuthUserRequest( + name="name_value", + ) + + # Make the request + response = client.get_token_auth_user(request=request) + + # Handle the response + print(response) + + +# [END redis_v1beta1_generated_CloudRedisCluster_GetTokenAuthUser_sync] diff --git a/packages/google-cloud-redis-cluster/samples/generated_samples/redis_v1beta1_generated_cloud_redis_cluster_list_auth_tokens_async.py b/packages/google-cloud-redis-cluster/samples/generated_samples/redis_v1beta1_generated_cloud_redis_cluster_list_auth_tokens_async.py new file mode 100644 index 000000000000..3355242f0129 --- /dev/null +++ b/packages/google-cloud-redis-cluster/samples/generated_samples/redis_v1beta1_generated_cloud_redis_cluster_list_auth_tokens_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 ListAuthTokens +# 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-redis-cluster + + +# [START redis_v1beta1_generated_CloudRedisCluster_ListAuthTokens_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 redis_cluster_v1beta1 + + +async def sample_list_auth_tokens(): + # Create a client + client = redis_cluster_v1beta1.CloudRedisClusterAsyncClient() + + # Initialize request argument(s) + request = redis_cluster_v1beta1.ListAuthTokensRequest( + parent="parent_value", + ) + + # Make the request + page_result = client.list_auth_tokens(request=request) + + # Handle the response + async for response in page_result: + print(response) + + +# [END redis_v1beta1_generated_CloudRedisCluster_ListAuthTokens_async] diff --git a/packages/google-cloud-redis-cluster/samples/generated_samples/redis_v1beta1_generated_cloud_redis_cluster_list_auth_tokens_sync.py b/packages/google-cloud-redis-cluster/samples/generated_samples/redis_v1beta1_generated_cloud_redis_cluster_list_auth_tokens_sync.py new file mode 100644 index 000000000000..7ffb9d89dde4 --- /dev/null +++ b/packages/google-cloud-redis-cluster/samples/generated_samples/redis_v1beta1_generated_cloud_redis_cluster_list_auth_tokens_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 ListAuthTokens +# 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-redis-cluster + + +# [START redis_v1beta1_generated_CloudRedisCluster_ListAuthTokens_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 redis_cluster_v1beta1 + + +def sample_list_auth_tokens(): + # Create a client + client = redis_cluster_v1beta1.CloudRedisClusterClient() + + # Initialize request argument(s) + request = redis_cluster_v1beta1.ListAuthTokensRequest( + parent="parent_value", + ) + + # Make the request + page_result = client.list_auth_tokens(request=request) + + # Handle the response + for response in page_result: + print(response) + + +# [END redis_v1beta1_generated_CloudRedisCluster_ListAuthTokens_sync] diff --git a/packages/google-cloud-redis-cluster/samples/generated_samples/redis_v1beta1_generated_cloud_redis_cluster_list_token_auth_users_async.py b/packages/google-cloud-redis-cluster/samples/generated_samples/redis_v1beta1_generated_cloud_redis_cluster_list_token_auth_users_async.py new file mode 100644 index 000000000000..daea88c4b424 --- /dev/null +++ b/packages/google-cloud-redis-cluster/samples/generated_samples/redis_v1beta1_generated_cloud_redis_cluster_list_token_auth_users_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 ListTokenAuthUsers +# 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-redis-cluster + + +# [START redis_v1beta1_generated_CloudRedisCluster_ListTokenAuthUsers_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 redis_cluster_v1beta1 + + +async def sample_list_token_auth_users(): + # Create a client + client = redis_cluster_v1beta1.CloudRedisClusterAsyncClient() + + # Initialize request argument(s) + request = redis_cluster_v1beta1.ListTokenAuthUsersRequest( + parent="parent_value", + ) + + # Make the request + page_result = client.list_token_auth_users(request=request) + + # Handle the response + async for response in page_result: + print(response) + + +# [END redis_v1beta1_generated_CloudRedisCluster_ListTokenAuthUsers_async] diff --git a/packages/google-cloud-redis-cluster/samples/generated_samples/redis_v1beta1_generated_cloud_redis_cluster_list_token_auth_users_sync.py b/packages/google-cloud-redis-cluster/samples/generated_samples/redis_v1beta1_generated_cloud_redis_cluster_list_token_auth_users_sync.py new file mode 100644 index 000000000000..eddea1b247e6 --- /dev/null +++ b/packages/google-cloud-redis-cluster/samples/generated_samples/redis_v1beta1_generated_cloud_redis_cluster_list_token_auth_users_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 ListTokenAuthUsers +# 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-redis-cluster + + +# [START redis_v1beta1_generated_CloudRedisCluster_ListTokenAuthUsers_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 redis_cluster_v1beta1 + + +def sample_list_token_auth_users(): + # Create a client + client = redis_cluster_v1beta1.CloudRedisClusterClient() + + # Initialize request argument(s) + request = redis_cluster_v1beta1.ListTokenAuthUsersRequest( + parent="parent_value", + ) + + # Make the request + page_result = client.list_token_auth_users(request=request) + + # Handle the response + for response in page_result: + print(response) + + +# [END redis_v1beta1_generated_CloudRedisCluster_ListTokenAuthUsers_sync] diff --git a/packages/google-cloud-redis-cluster/samples/generated_samples/snippet_metadata_google.cloud.redis.cluster.v1beta1.json b/packages/google-cloud-redis-cluster/samples/generated_samples/snippet_metadata_google.cloud.redis.cluster.v1beta1.json index 12e971ee85a3..714d6d9db972 100644 --- a/packages/google-cloud-redis-cluster/samples/generated_samples/snippet_metadata_google.cloud.redis.cluster.v1beta1.json +++ b/packages/google-cloud-redis-cluster/samples/generated_samples/snippet_metadata_google.cloud.redis.cluster.v1beta1.json @@ -19,24 +19,28 @@ "fullName": "google.cloud.redis_cluster_v1beta1.CloudRedisClusterAsyncClient", "shortName": "CloudRedisClusterAsyncClient" }, - "fullName": "google.cloud.redis_cluster_v1beta1.CloudRedisClusterAsyncClient.backup_cluster", + "fullName": "google.cloud.redis_cluster_v1beta1.CloudRedisClusterAsyncClient.add_auth_token", "method": { - "fullName": "google.cloud.redis.cluster.v1beta1.CloudRedisCluster.BackupCluster", + "fullName": "google.cloud.redis.cluster.v1beta1.CloudRedisCluster.AddAuthToken", "service": { "fullName": "google.cloud.redis.cluster.v1beta1.CloudRedisCluster", "shortName": "CloudRedisCluster" }, - "shortName": "BackupCluster" + "shortName": "AddAuthToken" }, "parameters": [ { "name": "request", - "type": "google.cloud.redis_cluster_v1beta1.types.BackupClusterRequest" + "type": "google.cloud.redis_cluster_v1beta1.types.AddAuthTokenRequest" }, { - "name": "name", + "name": "token_auth_user", "type": "str" }, + { + "name": "auth_token", + "type": "google.cloud.redis_cluster_v1beta1.types.AuthToken" + }, { "name": "retry", "type": "google.api_core.retry.Retry" @@ -51,13 +55,13 @@ } ], "resultType": "google.api_core.operation_async.AsyncOperation", - "shortName": "backup_cluster" + "shortName": "add_auth_token" }, - "description": "Sample for BackupCluster", - "file": "redis_v1beta1_generated_cloud_redis_cluster_backup_cluster_async.py", + "description": "Sample for AddAuthToken", + "file": "redis_v1beta1_generated_cloud_redis_cluster_add_auth_token_async.py", "language": "PYTHON", "origin": "API_DEFINITION", - "regionTag": "redis_v1beta1_generated_CloudRedisCluster_BackupCluster_async", + "regionTag": "redis_v1beta1_generated_CloudRedisCluster_AddAuthToken_async", "segments": [ { "end": 55, @@ -90,7 +94,7 @@ "type": "RESPONSE_HANDLING" } ], - "title": "redis_v1beta1_generated_cloud_redis_cluster_backup_cluster_async.py" + "title": "redis_v1beta1_generated_cloud_redis_cluster_add_auth_token_async.py" }, { "canonical": true, @@ -99,24 +103,28 @@ "fullName": "google.cloud.redis_cluster_v1beta1.CloudRedisClusterClient", "shortName": "CloudRedisClusterClient" }, - "fullName": "google.cloud.redis_cluster_v1beta1.CloudRedisClusterClient.backup_cluster", + "fullName": "google.cloud.redis_cluster_v1beta1.CloudRedisClusterClient.add_auth_token", "method": { - "fullName": "google.cloud.redis.cluster.v1beta1.CloudRedisCluster.BackupCluster", + "fullName": "google.cloud.redis.cluster.v1beta1.CloudRedisCluster.AddAuthToken", "service": { "fullName": "google.cloud.redis.cluster.v1beta1.CloudRedisCluster", "shortName": "CloudRedisCluster" }, - "shortName": "BackupCluster" + "shortName": "AddAuthToken" }, "parameters": [ { "name": "request", - "type": "google.cloud.redis_cluster_v1beta1.types.BackupClusterRequest" + "type": "google.cloud.redis_cluster_v1beta1.types.AddAuthTokenRequest" }, { - "name": "name", + "name": "token_auth_user", "type": "str" }, + { + "name": "auth_token", + "type": "google.cloud.redis_cluster_v1beta1.types.AuthToken" + }, { "name": "retry", "type": "google.api_core.retry.Retry" @@ -131,13 +139,13 @@ } ], "resultType": "google.api_core.operation.Operation", - "shortName": "backup_cluster" + "shortName": "add_auth_token" }, - "description": "Sample for BackupCluster", - "file": "redis_v1beta1_generated_cloud_redis_cluster_backup_cluster_sync.py", + "description": "Sample for AddAuthToken", + "file": "redis_v1beta1_generated_cloud_redis_cluster_add_auth_token_sync.py", "language": "PYTHON", "origin": "API_DEFINITION", - "regionTag": "redis_v1beta1_generated_CloudRedisCluster_BackupCluster_sync", + "regionTag": "redis_v1beta1_generated_CloudRedisCluster_AddAuthToken_sync", "segments": [ { "end": 55, @@ -170,7 +178,7 @@ "type": "RESPONSE_HANDLING" } ], - "title": "redis_v1beta1_generated_cloud_redis_cluster_backup_cluster_sync.py" + "title": "redis_v1beta1_generated_cloud_redis_cluster_add_auth_token_sync.py" }, { "canonical": true, @@ -180,30 +188,26 @@ "fullName": "google.cloud.redis_cluster_v1beta1.CloudRedisClusterAsyncClient", "shortName": "CloudRedisClusterAsyncClient" }, - "fullName": "google.cloud.redis_cluster_v1beta1.CloudRedisClusterAsyncClient.create_acl_policy", + "fullName": "google.cloud.redis_cluster_v1beta1.CloudRedisClusterAsyncClient.add_token_auth_user", "method": { - "fullName": "google.cloud.redis.cluster.v1beta1.CloudRedisCluster.CreateAclPolicy", + "fullName": "google.cloud.redis.cluster.v1beta1.CloudRedisCluster.AddTokenAuthUser", "service": { "fullName": "google.cloud.redis.cluster.v1beta1.CloudRedisCluster", "shortName": "CloudRedisCluster" }, - "shortName": "CreateAclPolicy" + "shortName": "AddTokenAuthUser" }, "parameters": [ { "name": "request", - "type": "google.cloud.redis_cluster_v1beta1.types.CreateAclPolicyRequest" + "type": "google.cloud.redis_cluster_v1beta1.types.AddTokenAuthUserRequest" }, { - "name": "parent", + "name": "cluster", "type": "str" }, { - "name": "acl_policy", - "type": "google.cloud.redis_cluster_v1beta1.types.AclPolicy" - }, - { - "name": "acl_policy_id", + "name": "token_auth_user", "type": "str" }, { @@ -219,22 +223,22 @@ "type": "Sequence[Tuple[str, Union[str, bytes]]]" } ], - "resultType": "google.cloud.redis_cluster_v1beta1.types.AclPolicy", - "shortName": "create_acl_policy" + "resultType": "google.api_core.operation_async.AsyncOperation", + "shortName": "add_token_auth_user" }, - "description": "Sample for CreateAclPolicy", - "file": "redis_v1beta1_generated_cloud_redis_cluster_create_acl_policy_async.py", + "description": "Sample for AddTokenAuthUser", + "file": "redis_v1beta1_generated_cloud_redis_cluster_add_token_auth_user_async.py", "language": "PYTHON", "origin": "API_DEFINITION", - "regionTag": "redis_v1beta1_generated_CloudRedisCluster_CreateAclPolicy_async", + "regionTag": "redis_v1beta1_generated_CloudRedisCluster_AddTokenAuthUser_async", "segments": [ { - "end": 57, + "end": 56, "start": 27, "type": "FULL" }, { - "end": 57, + "end": 56, "start": 27, "type": "SHORT" }, @@ -244,22 +248,22 @@ "type": "CLIENT_INITIALIZATION" }, { - "end": 51, + "end": 46, "start": 41, "type": "REQUEST_INITIALIZATION" }, { - "end": 54, - "start": 52, + "end": 53, + "start": 47, "type": "REQUEST_EXECUTION" }, { - "end": 58, - "start": 55, + "end": 57, + "start": 54, "type": "RESPONSE_HANDLING" } ], - "title": "redis_v1beta1_generated_cloud_redis_cluster_create_acl_policy_async.py" + "title": "redis_v1beta1_generated_cloud_redis_cluster_add_token_auth_user_async.py" }, { "canonical": true, @@ -268,30 +272,107 @@ "fullName": "google.cloud.redis_cluster_v1beta1.CloudRedisClusterClient", "shortName": "CloudRedisClusterClient" }, - "fullName": "google.cloud.redis_cluster_v1beta1.CloudRedisClusterClient.create_acl_policy", + "fullName": "google.cloud.redis_cluster_v1beta1.CloudRedisClusterClient.add_token_auth_user", "method": { - "fullName": "google.cloud.redis.cluster.v1beta1.CloudRedisCluster.CreateAclPolicy", + "fullName": "google.cloud.redis.cluster.v1beta1.CloudRedisCluster.AddTokenAuthUser", "service": { "fullName": "google.cloud.redis.cluster.v1beta1.CloudRedisCluster", "shortName": "CloudRedisCluster" }, - "shortName": "CreateAclPolicy" + "shortName": "AddTokenAuthUser" }, "parameters": [ { "name": "request", - "type": "google.cloud.redis_cluster_v1beta1.types.CreateAclPolicyRequest" + "type": "google.cloud.redis_cluster_v1beta1.types.AddTokenAuthUserRequest" }, { - "name": "parent", + "name": "cluster", "type": "str" }, { - "name": "acl_policy", - "type": "google.cloud.redis_cluster_v1beta1.types.AclPolicy" + "name": "token_auth_user", + "type": "str" }, { - "name": "acl_policy_id", + "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.operation.Operation", + "shortName": "add_token_auth_user" + }, + "description": "Sample for AddTokenAuthUser", + "file": "redis_v1beta1_generated_cloud_redis_cluster_add_token_auth_user_sync.py", + "language": "PYTHON", + "origin": "API_DEFINITION", + "regionTag": "redis_v1beta1_generated_CloudRedisCluster_AddTokenAuthUser_sync", + "segments": [ + { + "end": 56, + "start": 27, + "type": "FULL" + }, + { + "end": 56, + "start": 27, + "type": "SHORT" + }, + { + "end": 40, + "start": 38, + "type": "CLIENT_INITIALIZATION" + }, + { + "end": 46, + "start": 41, + "type": "REQUEST_INITIALIZATION" + }, + { + "end": 53, + "start": 47, + "type": "REQUEST_EXECUTION" + }, + { + "end": 57, + "start": 54, + "type": "RESPONSE_HANDLING" + } + ], + "title": "redis_v1beta1_generated_cloud_redis_cluster_add_token_auth_user_sync.py" + }, + { + "canonical": true, + "clientMethod": { + "async": true, + "client": { + "fullName": "google.cloud.redis_cluster_v1beta1.CloudRedisClusterAsyncClient", + "shortName": "CloudRedisClusterAsyncClient" + }, + "fullName": "google.cloud.redis_cluster_v1beta1.CloudRedisClusterAsyncClient.backup_cluster", + "method": { + "fullName": "google.cloud.redis.cluster.v1beta1.CloudRedisCluster.BackupCluster", + "service": { + "fullName": "google.cloud.redis.cluster.v1beta1.CloudRedisCluster", + "shortName": "CloudRedisCluster" + }, + "shortName": "BackupCluster" + }, + "parameters": [ + { + "name": "request", + "type": "google.cloud.redis_cluster_v1beta1.types.BackupClusterRequest" + }, + { + "name": "name", "type": "str" }, { @@ -307,22 +388,22 @@ "type": "Sequence[Tuple[str, Union[str, bytes]]]" } ], - "resultType": "google.cloud.redis_cluster_v1beta1.types.AclPolicy", - "shortName": "create_acl_policy" + "resultType": "google.api_core.operation_async.AsyncOperation", + "shortName": "backup_cluster" }, - "description": "Sample for CreateAclPolicy", - "file": "redis_v1beta1_generated_cloud_redis_cluster_create_acl_policy_sync.py", + "description": "Sample for BackupCluster", + "file": "redis_v1beta1_generated_cloud_redis_cluster_backup_cluster_async.py", "language": "PYTHON", "origin": "API_DEFINITION", - "regionTag": "redis_v1beta1_generated_CloudRedisCluster_CreateAclPolicy_sync", + "regionTag": "redis_v1beta1_generated_CloudRedisCluster_BackupCluster_async", "segments": [ { - "end": 57, + "end": 55, "start": 27, "type": "FULL" }, { - "end": 57, + "end": 55, "start": 27, "type": "SHORT" }, @@ -332,22 +413,102 @@ "type": "CLIENT_INITIALIZATION" }, { - "end": 51, + "end": 45, "start": 41, "type": "REQUEST_INITIALIZATION" }, { - "end": 54, - "start": 52, + "end": 52, + "start": 46, "type": "REQUEST_EXECUTION" }, { - "end": 58, - "start": 55, + "end": 56, + "start": 53, "type": "RESPONSE_HANDLING" } ], - "title": "redis_v1beta1_generated_cloud_redis_cluster_create_acl_policy_sync.py" + "title": "redis_v1beta1_generated_cloud_redis_cluster_backup_cluster_async.py" + }, + { + "canonical": true, + "clientMethod": { + "client": { + "fullName": "google.cloud.redis_cluster_v1beta1.CloudRedisClusterClient", + "shortName": "CloudRedisClusterClient" + }, + "fullName": "google.cloud.redis_cluster_v1beta1.CloudRedisClusterClient.backup_cluster", + "method": { + "fullName": "google.cloud.redis.cluster.v1beta1.CloudRedisCluster.BackupCluster", + "service": { + "fullName": "google.cloud.redis.cluster.v1beta1.CloudRedisCluster", + "shortName": "CloudRedisCluster" + }, + "shortName": "BackupCluster" + }, + "parameters": [ + { + "name": "request", + "type": "google.cloud.redis_cluster_v1beta1.types.BackupClusterRequest" + }, + { + "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.api_core.operation.Operation", + "shortName": "backup_cluster" + }, + "description": "Sample for BackupCluster", + "file": "redis_v1beta1_generated_cloud_redis_cluster_backup_cluster_sync.py", + "language": "PYTHON", + "origin": "API_DEFINITION", + "regionTag": "redis_v1beta1_generated_CloudRedisCluster_BackupCluster_sync", + "segments": [ + { + "end": 55, + "start": 27, + "type": "FULL" + }, + { + "end": 55, + "start": 27, + "type": "SHORT" + }, + { + "end": 40, + "start": 38, + "type": "CLIENT_INITIALIZATION" + }, + { + "end": 45, + "start": 41, + "type": "REQUEST_INITIALIZATION" + }, + { + "end": 52, + "start": 46, + "type": "REQUEST_EXECUTION" + }, + { + "end": 56, + "start": 53, + "type": "RESPONSE_HANDLING" + } + ], + "title": "redis_v1beta1_generated_cloud_redis_cluster_backup_cluster_sync.py" }, { "canonical": true, @@ -357,31 +518,1178 @@ "fullName": "google.cloud.redis_cluster_v1beta1.CloudRedisClusterAsyncClient", "shortName": "CloudRedisClusterAsyncClient" }, - "fullName": "google.cloud.redis_cluster_v1beta1.CloudRedisClusterAsyncClient.create_cluster", + "fullName": "google.cloud.redis_cluster_v1beta1.CloudRedisClusterAsyncClient.create_acl_policy", "method": { - "fullName": "google.cloud.redis.cluster.v1beta1.CloudRedisCluster.CreateCluster", + "fullName": "google.cloud.redis.cluster.v1beta1.CloudRedisCluster.CreateAclPolicy", "service": { "fullName": "google.cloud.redis.cluster.v1beta1.CloudRedisCluster", "shortName": "CloudRedisCluster" }, - "shortName": "CreateCluster" + "shortName": "CreateAclPolicy" }, "parameters": [ { "name": "request", - "type": "google.cloud.redis_cluster_v1beta1.types.CreateClusterRequest" + "type": "google.cloud.redis_cluster_v1beta1.types.CreateAclPolicyRequest" }, { "name": "parent", "type": "str" }, { - "name": "cluster", - "type": "google.cloud.redis_cluster_v1beta1.types.Cluster" + "name": "acl_policy", + "type": "google.cloud.redis_cluster_v1beta1.types.AclPolicy" + }, + { + "name": "acl_policy_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.redis_cluster_v1beta1.types.AclPolicy", + "shortName": "create_acl_policy" + }, + "description": "Sample for CreateAclPolicy", + "file": "redis_v1beta1_generated_cloud_redis_cluster_create_acl_policy_async.py", + "language": "PYTHON", + "origin": "API_DEFINITION", + "regionTag": "redis_v1beta1_generated_CloudRedisCluster_CreateAclPolicy_async", + "segments": [ + { + "end": 57, + "start": 27, + "type": "FULL" + }, + { + "end": 57, + "start": 27, + "type": "SHORT" + }, + { + "end": 40, + "start": 38, + "type": "CLIENT_INITIALIZATION" + }, + { + "end": 51, + "start": 41, + "type": "REQUEST_INITIALIZATION" + }, + { + "end": 54, + "start": 52, + "type": "REQUEST_EXECUTION" + }, + { + "end": 58, + "start": 55, + "type": "RESPONSE_HANDLING" + } + ], + "title": "redis_v1beta1_generated_cloud_redis_cluster_create_acl_policy_async.py" + }, + { + "canonical": true, + "clientMethod": { + "client": { + "fullName": "google.cloud.redis_cluster_v1beta1.CloudRedisClusterClient", + "shortName": "CloudRedisClusterClient" + }, + "fullName": "google.cloud.redis_cluster_v1beta1.CloudRedisClusterClient.create_acl_policy", + "method": { + "fullName": "google.cloud.redis.cluster.v1beta1.CloudRedisCluster.CreateAclPolicy", + "service": { + "fullName": "google.cloud.redis.cluster.v1beta1.CloudRedisCluster", + "shortName": "CloudRedisCluster" + }, + "shortName": "CreateAclPolicy" + }, + "parameters": [ + { + "name": "request", + "type": "google.cloud.redis_cluster_v1beta1.types.CreateAclPolicyRequest" + }, + { + "name": "parent", + "type": "str" + }, + { + "name": "acl_policy", + "type": "google.cloud.redis_cluster_v1beta1.types.AclPolicy" + }, + { + "name": "acl_policy_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.redis_cluster_v1beta1.types.AclPolicy", + "shortName": "create_acl_policy" + }, + "description": "Sample for CreateAclPolicy", + "file": "redis_v1beta1_generated_cloud_redis_cluster_create_acl_policy_sync.py", + "language": "PYTHON", + "origin": "API_DEFINITION", + "regionTag": "redis_v1beta1_generated_CloudRedisCluster_CreateAclPolicy_sync", + "segments": [ + { + "end": 57, + "start": 27, + "type": "FULL" + }, + { + "end": 57, + "start": 27, + "type": "SHORT" + }, + { + "end": 40, + "start": 38, + "type": "CLIENT_INITIALIZATION" + }, + { + "end": 51, + "start": 41, + "type": "REQUEST_INITIALIZATION" + }, + { + "end": 54, + "start": 52, + "type": "REQUEST_EXECUTION" + }, + { + "end": 58, + "start": 55, + "type": "RESPONSE_HANDLING" + } + ], + "title": "redis_v1beta1_generated_cloud_redis_cluster_create_acl_policy_sync.py" + }, + { + "canonical": true, + "clientMethod": { + "async": true, + "client": { + "fullName": "google.cloud.redis_cluster_v1beta1.CloudRedisClusterAsyncClient", + "shortName": "CloudRedisClusterAsyncClient" + }, + "fullName": "google.cloud.redis_cluster_v1beta1.CloudRedisClusterAsyncClient.create_cluster", + "method": { + "fullName": "google.cloud.redis.cluster.v1beta1.CloudRedisCluster.CreateCluster", + "service": { + "fullName": "google.cloud.redis.cluster.v1beta1.CloudRedisCluster", + "shortName": "CloudRedisCluster" + }, + "shortName": "CreateCluster" + }, + "parameters": [ + { + "name": "request", + "type": "google.cloud.redis_cluster_v1beta1.types.CreateClusterRequest" + }, + { + "name": "parent", + "type": "str" + }, + { + "name": "cluster", + "type": "google.cloud.redis_cluster_v1beta1.types.Cluster" + }, + { + "name": "cluster_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.api_core.operation_async.AsyncOperation", + "shortName": "create_cluster" + }, + "description": "Sample for CreateCluster", + "file": "redis_v1beta1_generated_cloud_redis_cluster_create_cluster_async.py", + "language": "PYTHON", + "origin": "API_DEFINITION", + "regionTag": "redis_v1beta1_generated_CloudRedisCluster_CreateCluster_async", + "segments": [ + { + "end": 60, + "start": 27, + "type": "FULL" + }, + { + "end": 60, + "start": 27, + "type": "SHORT" + }, + { + "end": 40, + "start": 38, + "type": "CLIENT_INITIALIZATION" + }, + { + "end": 50, + "start": 41, + "type": "REQUEST_INITIALIZATION" + }, + { + "end": 57, + "start": 51, + "type": "REQUEST_EXECUTION" + }, + { + "end": 61, + "start": 58, + "type": "RESPONSE_HANDLING" + } + ], + "title": "redis_v1beta1_generated_cloud_redis_cluster_create_cluster_async.py" + }, + { + "canonical": true, + "clientMethod": { + "client": { + "fullName": "google.cloud.redis_cluster_v1beta1.CloudRedisClusterClient", + "shortName": "CloudRedisClusterClient" + }, + "fullName": "google.cloud.redis_cluster_v1beta1.CloudRedisClusterClient.create_cluster", + "method": { + "fullName": "google.cloud.redis.cluster.v1beta1.CloudRedisCluster.CreateCluster", + "service": { + "fullName": "google.cloud.redis.cluster.v1beta1.CloudRedisCluster", + "shortName": "CloudRedisCluster" + }, + "shortName": "CreateCluster" + }, + "parameters": [ + { + "name": "request", + "type": "google.cloud.redis_cluster_v1beta1.types.CreateClusterRequest" + }, + { + "name": "parent", + "type": "str" + }, + { + "name": "cluster", + "type": "google.cloud.redis_cluster_v1beta1.types.Cluster" + }, + { + "name": "cluster_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.api_core.operation.Operation", + "shortName": "create_cluster" + }, + "description": "Sample for CreateCluster", + "file": "redis_v1beta1_generated_cloud_redis_cluster_create_cluster_sync.py", + "language": "PYTHON", + "origin": "API_DEFINITION", + "regionTag": "redis_v1beta1_generated_CloudRedisCluster_CreateCluster_sync", + "segments": [ + { + "end": 60, + "start": 27, + "type": "FULL" + }, + { + "end": 60, + "start": 27, + "type": "SHORT" + }, + { + "end": 40, + "start": 38, + "type": "CLIENT_INITIALIZATION" + }, + { + "end": 50, + "start": 41, + "type": "REQUEST_INITIALIZATION" + }, + { + "end": 57, + "start": 51, + "type": "REQUEST_EXECUTION" + }, + { + "end": 61, + "start": 58, + "type": "RESPONSE_HANDLING" + } + ], + "title": "redis_v1beta1_generated_cloud_redis_cluster_create_cluster_sync.py" + }, + { + "canonical": true, + "clientMethod": { + "async": true, + "client": { + "fullName": "google.cloud.redis_cluster_v1beta1.CloudRedisClusterAsyncClient", + "shortName": "CloudRedisClusterAsyncClient" + }, + "fullName": "google.cloud.redis_cluster_v1beta1.CloudRedisClusterAsyncClient.delete_acl_policy", + "method": { + "fullName": "google.cloud.redis.cluster.v1beta1.CloudRedisCluster.DeleteAclPolicy", + "service": { + "fullName": "google.cloud.redis.cluster.v1beta1.CloudRedisCluster", + "shortName": "CloudRedisCluster" + }, + "shortName": "DeleteAclPolicy" + }, + "parameters": [ + { + "name": "request", + "type": "google.cloud.redis_cluster_v1beta1.types.DeleteAclPolicyRequest" + }, + { + "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.api_core.operation_async.AsyncOperation", + "shortName": "delete_acl_policy" + }, + "description": "Sample for DeleteAclPolicy", + "file": "redis_v1beta1_generated_cloud_redis_cluster_delete_acl_policy_async.py", + "language": "PYTHON", + "origin": "API_DEFINITION", + "regionTag": "redis_v1beta1_generated_CloudRedisCluster_DeleteAclPolicy_async", + "segments": [ + { + "end": 55, + "start": 27, + "type": "FULL" + }, + { + "end": 55, + "start": 27, + "type": "SHORT" + }, + { + "end": 40, + "start": 38, + "type": "CLIENT_INITIALIZATION" + }, + { + "end": 45, + "start": 41, + "type": "REQUEST_INITIALIZATION" + }, + { + "end": 52, + "start": 46, + "type": "REQUEST_EXECUTION" + }, + { + "end": 56, + "start": 53, + "type": "RESPONSE_HANDLING" + } + ], + "title": "redis_v1beta1_generated_cloud_redis_cluster_delete_acl_policy_async.py" + }, + { + "canonical": true, + "clientMethod": { + "client": { + "fullName": "google.cloud.redis_cluster_v1beta1.CloudRedisClusterClient", + "shortName": "CloudRedisClusterClient" + }, + "fullName": "google.cloud.redis_cluster_v1beta1.CloudRedisClusterClient.delete_acl_policy", + "method": { + "fullName": "google.cloud.redis.cluster.v1beta1.CloudRedisCluster.DeleteAclPolicy", + "service": { + "fullName": "google.cloud.redis.cluster.v1beta1.CloudRedisCluster", + "shortName": "CloudRedisCluster" + }, + "shortName": "DeleteAclPolicy" + }, + "parameters": [ + { + "name": "request", + "type": "google.cloud.redis_cluster_v1beta1.types.DeleteAclPolicyRequest" + }, + { + "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.api_core.operation.Operation", + "shortName": "delete_acl_policy" + }, + "description": "Sample for DeleteAclPolicy", + "file": "redis_v1beta1_generated_cloud_redis_cluster_delete_acl_policy_sync.py", + "language": "PYTHON", + "origin": "API_DEFINITION", + "regionTag": "redis_v1beta1_generated_CloudRedisCluster_DeleteAclPolicy_sync", + "segments": [ + { + "end": 55, + "start": 27, + "type": "FULL" + }, + { + "end": 55, + "start": 27, + "type": "SHORT" + }, + { + "end": 40, + "start": 38, + "type": "CLIENT_INITIALIZATION" + }, + { + "end": 45, + "start": 41, + "type": "REQUEST_INITIALIZATION" + }, + { + "end": 52, + "start": 46, + "type": "REQUEST_EXECUTION" + }, + { + "end": 56, + "start": 53, + "type": "RESPONSE_HANDLING" + } + ], + "title": "redis_v1beta1_generated_cloud_redis_cluster_delete_acl_policy_sync.py" + }, + { + "canonical": true, + "clientMethod": { + "async": true, + "client": { + "fullName": "google.cloud.redis_cluster_v1beta1.CloudRedisClusterAsyncClient", + "shortName": "CloudRedisClusterAsyncClient" + }, + "fullName": "google.cloud.redis_cluster_v1beta1.CloudRedisClusterAsyncClient.delete_auth_token", + "method": { + "fullName": "google.cloud.redis.cluster.v1beta1.CloudRedisCluster.DeleteAuthToken", + "service": { + "fullName": "google.cloud.redis.cluster.v1beta1.CloudRedisCluster", + "shortName": "CloudRedisCluster" + }, + "shortName": "DeleteAuthToken" + }, + "parameters": [ + { + "name": "request", + "type": "google.cloud.redis_cluster_v1beta1.types.DeleteAuthTokenRequest" + }, + { + "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.api_core.operation_async.AsyncOperation", + "shortName": "delete_auth_token" + }, + "description": "Sample for DeleteAuthToken", + "file": "redis_v1beta1_generated_cloud_redis_cluster_delete_auth_token_async.py", + "language": "PYTHON", + "origin": "API_DEFINITION", + "regionTag": "redis_v1beta1_generated_CloudRedisCluster_DeleteAuthToken_async", + "segments": [ + { + "end": 55, + "start": 27, + "type": "FULL" + }, + { + "end": 55, + "start": 27, + "type": "SHORT" + }, + { + "end": 40, + "start": 38, + "type": "CLIENT_INITIALIZATION" + }, + { + "end": 45, + "start": 41, + "type": "REQUEST_INITIALIZATION" + }, + { + "end": 52, + "start": 46, + "type": "REQUEST_EXECUTION" + }, + { + "end": 56, + "start": 53, + "type": "RESPONSE_HANDLING" + } + ], + "title": "redis_v1beta1_generated_cloud_redis_cluster_delete_auth_token_async.py" + }, + { + "canonical": true, + "clientMethod": { + "client": { + "fullName": "google.cloud.redis_cluster_v1beta1.CloudRedisClusterClient", + "shortName": "CloudRedisClusterClient" + }, + "fullName": "google.cloud.redis_cluster_v1beta1.CloudRedisClusterClient.delete_auth_token", + "method": { + "fullName": "google.cloud.redis.cluster.v1beta1.CloudRedisCluster.DeleteAuthToken", + "service": { + "fullName": "google.cloud.redis.cluster.v1beta1.CloudRedisCluster", + "shortName": "CloudRedisCluster" + }, + "shortName": "DeleteAuthToken" + }, + "parameters": [ + { + "name": "request", + "type": "google.cloud.redis_cluster_v1beta1.types.DeleteAuthTokenRequest" + }, + { + "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.api_core.operation.Operation", + "shortName": "delete_auth_token" + }, + "description": "Sample for DeleteAuthToken", + "file": "redis_v1beta1_generated_cloud_redis_cluster_delete_auth_token_sync.py", + "language": "PYTHON", + "origin": "API_DEFINITION", + "regionTag": "redis_v1beta1_generated_CloudRedisCluster_DeleteAuthToken_sync", + "segments": [ + { + "end": 55, + "start": 27, + "type": "FULL" + }, + { + "end": 55, + "start": 27, + "type": "SHORT" + }, + { + "end": 40, + "start": 38, + "type": "CLIENT_INITIALIZATION" + }, + { + "end": 45, + "start": 41, + "type": "REQUEST_INITIALIZATION" + }, + { + "end": 52, + "start": 46, + "type": "REQUEST_EXECUTION" + }, + { + "end": 56, + "start": 53, + "type": "RESPONSE_HANDLING" + } + ], + "title": "redis_v1beta1_generated_cloud_redis_cluster_delete_auth_token_sync.py" + }, + { + "canonical": true, + "clientMethod": { + "async": true, + "client": { + "fullName": "google.cloud.redis_cluster_v1beta1.CloudRedisClusterAsyncClient", + "shortName": "CloudRedisClusterAsyncClient" + }, + "fullName": "google.cloud.redis_cluster_v1beta1.CloudRedisClusterAsyncClient.delete_backup", + "method": { + "fullName": "google.cloud.redis.cluster.v1beta1.CloudRedisCluster.DeleteBackup", + "service": { + "fullName": "google.cloud.redis.cluster.v1beta1.CloudRedisCluster", + "shortName": "CloudRedisCluster" + }, + "shortName": "DeleteBackup" + }, + "parameters": [ + { + "name": "request", + "type": "google.cloud.redis_cluster_v1beta1.types.DeleteBackupRequest" + }, + { + "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.api_core.operation_async.AsyncOperation", + "shortName": "delete_backup" + }, + "description": "Sample for DeleteBackup", + "file": "redis_v1beta1_generated_cloud_redis_cluster_delete_backup_async.py", + "language": "PYTHON", + "origin": "API_DEFINITION", + "regionTag": "redis_v1beta1_generated_CloudRedisCluster_DeleteBackup_async", + "segments": [ + { + "end": 55, + "start": 27, + "type": "FULL" + }, + { + "end": 55, + "start": 27, + "type": "SHORT" + }, + { + "end": 40, + "start": 38, + "type": "CLIENT_INITIALIZATION" + }, + { + "end": 45, + "start": 41, + "type": "REQUEST_INITIALIZATION" + }, + { + "end": 52, + "start": 46, + "type": "REQUEST_EXECUTION" + }, + { + "end": 56, + "start": 53, + "type": "RESPONSE_HANDLING" + } + ], + "title": "redis_v1beta1_generated_cloud_redis_cluster_delete_backup_async.py" + }, + { + "canonical": true, + "clientMethod": { + "client": { + "fullName": "google.cloud.redis_cluster_v1beta1.CloudRedisClusterClient", + "shortName": "CloudRedisClusterClient" + }, + "fullName": "google.cloud.redis_cluster_v1beta1.CloudRedisClusterClient.delete_backup", + "method": { + "fullName": "google.cloud.redis.cluster.v1beta1.CloudRedisCluster.DeleteBackup", + "service": { + "fullName": "google.cloud.redis.cluster.v1beta1.CloudRedisCluster", + "shortName": "CloudRedisCluster" + }, + "shortName": "DeleteBackup" + }, + "parameters": [ + { + "name": "request", + "type": "google.cloud.redis_cluster_v1beta1.types.DeleteBackupRequest" + }, + { + "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.api_core.operation.Operation", + "shortName": "delete_backup" + }, + "description": "Sample for DeleteBackup", + "file": "redis_v1beta1_generated_cloud_redis_cluster_delete_backup_sync.py", + "language": "PYTHON", + "origin": "API_DEFINITION", + "regionTag": "redis_v1beta1_generated_CloudRedisCluster_DeleteBackup_sync", + "segments": [ + { + "end": 55, + "start": 27, + "type": "FULL" + }, + { + "end": 55, + "start": 27, + "type": "SHORT" + }, + { + "end": 40, + "start": 38, + "type": "CLIENT_INITIALIZATION" + }, + { + "end": 45, + "start": 41, + "type": "REQUEST_INITIALIZATION" + }, + { + "end": 52, + "start": 46, + "type": "REQUEST_EXECUTION" + }, + { + "end": 56, + "start": 53, + "type": "RESPONSE_HANDLING" + } + ], + "title": "redis_v1beta1_generated_cloud_redis_cluster_delete_backup_sync.py" + }, + { + "canonical": true, + "clientMethod": { + "async": true, + "client": { + "fullName": "google.cloud.redis_cluster_v1beta1.CloudRedisClusterAsyncClient", + "shortName": "CloudRedisClusterAsyncClient" + }, + "fullName": "google.cloud.redis_cluster_v1beta1.CloudRedisClusterAsyncClient.delete_cluster", + "method": { + "fullName": "google.cloud.redis.cluster.v1beta1.CloudRedisCluster.DeleteCluster", + "service": { + "fullName": "google.cloud.redis.cluster.v1beta1.CloudRedisCluster", + "shortName": "CloudRedisCluster" + }, + "shortName": "DeleteCluster" + }, + "parameters": [ + { + "name": "request", + "type": "google.cloud.redis_cluster_v1beta1.types.DeleteClusterRequest" + }, + { + "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.api_core.operation_async.AsyncOperation", + "shortName": "delete_cluster" + }, + "description": "Sample for DeleteCluster", + "file": "redis_v1beta1_generated_cloud_redis_cluster_delete_cluster_async.py", + "language": "PYTHON", + "origin": "API_DEFINITION", + "regionTag": "redis_v1beta1_generated_CloudRedisCluster_DeleteCluster_async", + "segments": [ + { + "end": 55, + "start": 27, + "type": "FULL" + }, + { + "end": 55, + "start": 27, + "type": "SHORT" + }, + { + "end": 40, + "start": 38, + "type": "CLIENT_INITIALIZATION" + }, + { + "end": 45, + "start": 41, + "type": "REQUEST_INITIALIZATION" + }, + { + "end": 52, + "start": 46, + "type": "REQUEST_EXECUTION" + }, + { + "end": 56, + "start": 53, + "type": "RESPONSE_HANDLING" + } + ], + "title": "redis_v1beta1_generated_cloud_redis_cluster_delete_cluster_async.py" + }, + { + "canonical": true, + "clientMethod": { + "client": { + "fullName": "google.cloud.redis_cluster_v1beta1.CloudRedisClusterClient", + "shortName": "CloudRedisClusterClient" + }, + "fullName": "google.cloud.redis_cluster_v1beta1.CloudRedisClusterClient.delete_cluster", + "method": { + "fullName": "google.cloud.redis.cluster.v1beta1.CloudRedisCluster.DeleteCluster", + "service": { + "fullName": "google.cloud.redis.cluster.v1beta1.CloudRedisCluster", + "shortName": "CloudRedisCluster" + }, + "shortName": "DeleteCluster" + }, + "parameters": [ + { + "name": "request", + "type": "google.cloud.redis_cluster_v1beta1.types.DeleteClusterRequest" + }, + { + "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.api_core.operation.Operation", + "shortName": "delete_cluster" + }, + "description": "Sample for DeleteCluster", + "file": "redis_v1beta1_generated_cloud_redis_cluster_delete_cluster_sync.py", + "language": "PYTHON", + "origin": "API_DEFINITION", + "regionTag": "redis_v1beta1_generated_CloudRedisCluster_DeleteCluster_sync", + "segments": [ + { + "end": 55, + "start": 27, + "type": "FULL" + }, + { + "end": 55, + "start": 27, + "type": "SHORT" + }, + { + "end": 40, + "start": 38, + "type": "CLIENT_INITIALIZATION" + }, + { + "end": 45, + "start": 41, + "type": "REQUEST_INITIALIZATION" + }, + { + "end": 52, + "start": 46, + "type": "REQUEST_EXECUTION" + }, + { + "end": 56, + "start": 53, + "type": "RESPONSE_HANDLING" + } + ], + "title": "redis_v1beta1_generated_cloud_redis_cluster_delete_cluster_sync.py" + }, + { + "canonical": true, + "clientMethod": { + "async": true, + "client": { + "fullName": "google.cloud.redis_cluster_v1beta1.CloudRedisClusterAsyncClient", + "shortName": "CloudRedisClusterAsyncClient" + }, + "fullName": "google.cloud.redis_cluster_v1beta1.CloudRedisClusterAsyncClient.delete_token_auth_user", + "method": { + "fullName": "google.cloud.redis.cluster.v1beta1.CloudRedisCluster.DeleteTokenAuthUser", + "service": { + "fullName": "google.cloud.redis.cluster.v1beta1.CloudRedisCluster", + "shortName": "CloudRedisCluster" + }, + "shortName": "DeleteTokenAuthUser" + }, + "parameters": [ + { + "name": "request", + "type": "google.cloud.redis_cluster_v1beta1.types.DeleteTokenAuthUserRequest" + }, + { + "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.api_core.operation_async.AsyncOperation", + "shortName": "delete_token_auth_user" + }, + "description": "Sample for DeleteTokenAuthUser", + "file": "redis_v1beta1_generated_cloud_redis_cluster_delete_token_auth_user_async.py", + "language": "PYTHON", + "origin": "API_DEFINITION", + "regionTag": "redis_v1beta1_generated_CloudRedisCluster_DeleteTokenAuthUser_async", + "segments": [ + { + "end": 55, + "start": 27, + "type": "FULL" + }, + { + "end": 55, + "start": 27, + "type": "SHORT" + }, + { + "end": 40, + "start": 38, + "type": "CLIENT_INITIALIZATION" + }, + { + "end": 45, + "start": 41, + "type": "REQUEST_INITIALIZATION" + }, + { + "end": 52, + "start": 46, + "type": "REQUEST_EXECUTION" + }, + { + "end": 56, + "start": 53, + "type": "RESPONSE_HANDLING" + } + ], + "title": "redis_v1beta1_generated_cloud_redis_cluster_delete_token_auth_user_async.py" + }, + { + "canonical": true, + "clientMethod": { + "client": { + "fullName": "google.cloud.redis_cluster_v1beta1.CloudRedisClusterClient", + "shortName": "CloudRedisClusterClient" + }, + "fullName": "google.cloud.redis_cluster_v1beta1.CloudRedisClusterClient.delete_token_auth_user", + "method": { + "fullName": "google.cloud.redis.cluster.v1beta1.CloudRedisCluster.DeleteTokenAuthUser", + "service": { + "fullName": "google.cloud.redis.cluster.v1beta1.CloudRedisCluster", + "shortName": "CloudRedisCluster" + }, + "shortName": "DeleteTokenAuthUser" + }, + "parameters": [ + { + "name": "request", + "type": "google.cloud.redis_cluster_v1beta1.types.DeleteTokenAuthUserRequest" + }, + { + "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.api_core.operation.Operation", + "shortName": "delete_token_auth_user" + }, + "description": "Sample for DeleteTokenAuthUser", + "file": "redis_v1beta1_generated_cloud_redis_cluster_delete_token_auth_user_sync.py", + "language": "PYTHON", + "origin": "API_DEFINITION", + "regionTag": "redis_v1beta1_generated_CloudRedisCluster_DeleteTokenAuthUser_sync", + "segments": [ + { + "end": 55, + "start": 27, + "type": "FULL" + }, + { + "end": 55, + "start": 27, + "type": "SHORT" + }, + { + "end": 40, + "start": 38, + "type": "CLIENT_INITIALIZATION" + }, + { + "end": 45, + "start": 41, + "type": "REQUEST_INITIALIZATION" + }, + { + "end": 52, + "start": 46, + "type": "REQUEST_EXECUTION" + }, + { + "end": 56, + "start": 53, + "type": "RESPONSE_HANDLING" + } + ], + "title": "redis_v1beta1_generated_cloud_redis_cluster_delete_token_auth_user_sync.py" + }, + { + "canonical": true, + "clientMethod": { + "async": true, + "client": { + "fullName": "google.cloud.redis_cluster_v1beta1.CloudRedisClusterAsyncClient", + "shortName": "CloudRedisClusterAsyncClient" + }, + "fullName": "google.cloud.redis_cluster_v1beta1.CloudRedisClusterAsyncClient.export_backup", + "method": { + "fullName": "google.cloud.redis.cluster.v1beta1.CloudRedisCluster.ExportBackup", + "service": { + "fullName": "google.cloud.redis.cluster.v1beta1.CloudRedisCluster", + "shortName": "CloudRedisCluster" }, + "shortName": "ExportBackup" + }, + "parameters": [ { - "name": "cluster_id", - "type": "str" + "name": "request", + "type": "google.cloud.redis_cluster_v1beta1.types.ExportBackupRequest" }, { "name": "retry", @@ -397,21 +1705,21 @@ } ], "resultType": "google.api_core.operation_async.AsyncOperation", - "shortName": "create_cluster" + "shortName": "export_backup" }, - "description": "Sample for CreateCluster", - "file": "redis_v1beta1_generated_cloud_redis_cluster_create_cluster_async.py", + "description": "Sample for ExportBackup", + "file": "redis_v1beta1_generated_cloud_redis_cluster_export_backup_async.py", "language": "PYTHON", "origin": "API_DEFINITION", - "regionTag": "redis_v1beta1_generated_CloudRedisCluster_CreateCluster_async", + "regionTag": "redis_v1beta1_generated_CloudRedisCluster_ExportBackup_async", "segments": [ { - "end": 60, + "end": 56, "start": 27, "type": "FULL" }, { - "end": 60, + "end": 56, "start": 27, "type": "SHORT" }, @@ -421,22 +1729,22 @@ "type": "CLIENT_INITIALIZATION" }, { - "end": 50, + "end": 46, "start": 41, "type": "REQUEST_INITIALIZATION" }, { - "end": 57, - "start": 51, + "end": 53, + "start": 47, "type": "REQUEST_EXECUTION" }, { - "end": 61, - "start": 58, + "end": 57, + "start": 54, "type": "RESPONSE_HANDLING" } ], - "title": "redis_v1beta1_generated_cloud_redis_cluster_create_cluster_async.py" + "title": "redis_v1beta1_generated_cloud_redis_cluster_export_backup_async.py" }, { "canonical": true, @@ -445,31 +1753,19 @@ "fullName": "google.cloud.redis_cluster_v1beta1.CloudRedisClusterClient", "shortName": "CloudRedisClusterClient" }, - "fullName": "google.cloud.redis_cluster_v1beta1.CloudRedisClusterClient.create_cluster", + "fullName": "google.cloud.redis_cluster_v1beta1.CloudRedisClusterClient.export_backup", "method": { - "fullName": "google.cloud.redis.cluster.v1beta1.CloudRedisCluster.CreateCluster", + "fullName": "google.cloud.redis.cluster.v1beta1.CloudRedisCluster.ExportBackup", "service": { "fullName": "google.cloud.redis.cluster.v1beta1.CloudRedisCluster", "shortName": "CloudRedisCluster" }, - "shortName": "CreateCluster" + "shortName": "ExportBackup" }, "parameters": [ { "name": "request", - "type": "google.cloud.redis_cluster_v1beta1.types.CreateClusterRequest" - }, - { - "name": "parent", - "type": "str" - }, - { - "name": "cluster", - "type": "google.cloud.redis_cluster_v1beta1.types.Cluster" - }, - { - "name": "cluster_id", - "type": "str" + "type": "google.cloud.redis_cluster_v1beta1.types.ExportBackupRequest" }, { "name": "retry", @@ -485,21 +1781,21 @@ } ], "resultType": "google.api_core.operation.Operation", - "shortName": "create_cluster" + "shortName": "export_backup" }, - "description": "Sample for CreateCluster", - "file": "redis_v1beta1_generated_cloud_redis_cluster_create_cluster_sync.py", + "description": "Sample for ExportBackup", + "file": "redis_v1beta1_generated_cloud_redis_cluster_export_backup_sync.py", "language": "PYTHON", "origin": "API_DEFINITION", - "regionTag": "redis_v1beta1_generated_CloudRedisCluster_CreateCluster_sync", + "regionTag": "redis_v1beta1_generated_CloudRedisCluster_ExportBackup_sync", "segments": [ { - "end": 60, + "end": 56, "start": 27, "type": "FULL" }, { - "end": 60, + "end": 56, "start": 27, "type": "SHORT" }, @@ -509,22 +1805,22 @@ "type": "CLIENT_INITIALIZATION" }, { - "end": 50, + "end": 46, "start": 41, "type": "REQUEST_INITIALIZATION" }, { - "end": 57, - "start": 51, + "end": 53, + "start": 47, "type": "REQUEST_EXECUTION" }, { - "end": 61, - "start": 58, + "end": 57, + "start": 54, "type": "RESPONSE_HANDLING" } ], - "title": "redis_v1beta1_generated_cloud_redis_cluster_create_cluster_sync.py" + "title": "redis_v1beta1_generated_cloud_redis_cluster_export_backup_sync.py" }, { "canonical": true, @@ -534,19 +1830,19 @@ "fullName": "google.cloud.redis_cluster_v1beta1.CloudRedisClusterAsyncClient", "shortName": "CloudRedisClusterAsyncClient" }, - "fullName": "google.cloud.redis_cluster_v1beta1.CloudRedisClusterAsyncClient.delete_acl_policy", + "fullName": "google.cloud.redis_cluster_v1beta1.CloudRedisClusterAsyncClient.get_acl_policy_revision", "method": { - "fullName": "google.cloud.redis.cluster.v1beta1.CloudRedisCluster.DeleteAclPolicy", + "fullName": "google.cloud.redis.cluster.v1beta1.CloudRedisCluster.GetAclPolicyRevision", "service": { "fullName": "google.cloud.redis.cluster.v1beta1.CloudRedisCluster", "shortName": "CloudRedisCluster" }, - "shortName": "DeleteAclPolicy" + "shortName": "GetAclPolicyRevision" }, "parameters": [ { "name": "request", - "type": "google.cloud.redis_cluster_v1beta1.types.DeleteAclPolicyRequest" + "type": "google.cloud.redis_cluster_v1beta1.types.GetAclPolicyRevisionRequest" }, { "name": "name", @@ -565,22 +1861,22 @@ "type": "Sequence[Tuple[str, Union[str, bytes]]]" } ], - "resultType": "google.api_core.operation_async.AsyncOperation", - "shortName": "delete_acl_policy" + "resultType": "google.cloud.redis_cluster_v1beta1.types.AclPolicyRevision", + "shortName": "get_acl_policy_revision" }, - "description": "Sample for DeleteAclPolicy", - "file": "redis_v1beta1_generated_cloud_redis_cluster_delete_acl_policy_async.py", + "description": "Sample for GetAclPolicyRevision", + "file": "redis_v1beta1_generated_cloud_redis_cluster_get_acl_policy_revision_async.py", "language": "PYTHON", "origin": "API_DEFINITION", - "regionTag": "redis_v1beta1_generated_CloudRedisCluster_DeleteAclPolicy_async", + "regionTag": "redis_v1beta1_generated_CloudRedisCluster_GetAclPolicyRevision_async", "segments": [ { - "end": 55, + "end": 51, "start": 27, "type": "FULL" }, { - "end": 55, + "end": 51, "start": 27, "type": "SHORT" }, @@ -595,17 +1891,17 @@ "type": "REQUEST_INITIALIZATION" }, { - "end": 52, + "end": 48, "start": 46, "type": "REQUEST_EXECUTION" }, { - "end": 56, - "start": 53, + "end": 52, + "start": 49, "type": "RESPONSE_HANDLING" } ], - "title": "redis_v1beta1_generated_cloud_redis_cluster_delete_acl_policy_async.py" + "title": "redis_v1beta1_generated_cloud_redis_cluster_get_acl_policy_revision_async.py" }, { "canonical": true, @@ -614,19 +1910,19 @@ "fullName": "google.cloud.redis_cluster_v1beta1.CloudRedisClusterClient", "shortName": "CloudRedisClusterClient" }, - "fullName": "google.cloud.redis_cluster_v1beta1.CloudRedisClusterClient.delete_acl_policy", + "fullName": "google.cloud.redis_cluster_v1beta1.CloudRedisClusterClient.get_acl_policy_revision", "method": { - "fullName": "google.cloud.redis.cluster.v1beta1.CloudRedisCluster.DeleteAclPolicy", + "fullName": "google.cloud.redis.cluster.v1beta1.CloudRedisCluster.GetAclPolicyRevision", "service": { "fullName": "google.cloud.redis.cluster.v1beta1.CloudRedisCluster", "shortName": "CloudRedisCluster" }, - "shortName": "DeleteAclPolicy" + "shortName": "GetAclPolicyRevision" }, "parameters": [ { "name": "request", - "type": "google.cloud.redis_cluster_v1beta1.types.DeleteAclPolicyRequest" + "type": "google.cloud.redis_cluster_v1beta1.types.GetAclPolicyRevisionRequest" }, { "name": "name", @@ -645,22 +1941,22 @@ "type": "Sequence[Tuple[str, Union[str, bytes]]]" } ], - "resultType": "google.api_core.operation.Operation", - "shortName": "delete_acl_policy" + "resultType": "google.cloud.redis_cluster_v1beta1.types.AclPolicyRevision", + "shortName": "get_acl_policy_revision" }, - "description": "Sample for DeleteAclPolicy", - "file": "redis_v1beta1_generated_cloud_redis_cluster_delete_acl_policy_sync.py", + "description": "Sample for GetAclPolicyRevision", + "file": "redis_v1beta1_generated_cloud_redis_cluster_get_acl_policy_revision_sync.py", "language": "PYTHON", "origin": "API_DEFINITION", - "regionTag": "redis_v1beta1_generated_CloudRedisCluster_DeleteAclPolicy_sync", + "regionTag": "redis_v1beta1_generated_CloudRedisCluster_GetAclPolicyRevision_sync", "segments": [ { - "end": 55, + "end": 51, "start": 27, "type": "FULL" }, { - "end": 55, + "end": 51, "start": 27, "type": "SHORT" }, @@ -675,17 +1971,17 @@ "type": "REQUEST_INITIALIZATION" }, { - "end": 52, + "end": 48, "start": 46, "type": "REQUEST_EXECUTION" }, { - "end": 56, - "start": 53, + "end": 52, + "start": 49, "type": "RESPONSE_HANDLING" } ], - "title": "redis_v1beta1_generated_cloud_redis_cluster_delete_acl_policy_sync.py" + "title": "redis_v1beta1_generated_cloud_redis_cluster_get_acl_policy_revision_sync.py" }, { "canonical": true, @@ -695,19 +1991,19 @@ "fullName": "google.cloud.redis_cluster_v1beta1.CloudRedisClusterAsyncClient", "shortName": "CloudRedisClusterAsyncClient" }, - "fullName": "google.cloud.redis_cluster_v1beta1.CloudRedisClusterAsyncClient.delete_backup", + "fullName": "google.cloud.redis_cluster_v1beta1.CloudRedisClusterAsyncClient.get_acl_policy", "method": { - "fullName": "google.cloud.redis.cluster.v1beta1.CloudRedisCluster.DeleteBackup", + "fullName": "google.cloud.redis.cluster.v1beta1.CloudRedisCluster.GetAclPolicy", "service": { "fullName": "google.cloud.redis.cluster.v1beta1.CloudRedisCluster", "shortName": "CloudRedisCluster" }, - "shortName": "DeleteBackup" + "shortName": "GetAclPolicy" }, "parameters": [ { "name": "request", - "type": "google.cloud.redis_cluster_v1beta1.types.DeleteBackupRequest" + "type": "google.cloud.redis_cluster_v1beta1.types.GetAclPolicyRequest" }, { "name": "name", @@ -726,22 +2022,22 @@ "type": "Sequence[Tuple[str, Union[str, bytes]]]" } ], - "resultType": "google.api_core.operation_async.AsyncOperation", - "shortName": "delete_backup" + "resultType": "google.cloud.redis_cluster_v1beta1.types.AclPolicy", + "shortName": "get_acl_policy" }, - "description": "Sample for DeleteBackup", - "file": "redis_v1beta1_generated_cloud_redis_cluster_delete_backup_async.py", + "description": "Sample for GetAclPolicy", + "file": "redis_v1beta1_generated_cloud_redis_cluster_get_acl_policy_async.py", "language": "PYTHON", "origin": "API_DEFINITION", - "regionTag": "redis_v1beta1_generated_CloudRedisCluster_DeleteBackup_async", + "regionTag": "redis_v1beta1_generated_CloudRedisCluster_GetAclPolicy_async", "segments": [ { - "end": 55, + "end": 51, "start": 27, "type": "FULL" }, { - "end": 55, + "end": 51, "start": 27, "type": "SHORT" }, @@ -756,17 +2052,17 @@ "type": "REQUEST_INITIALIZATION" }, { - "end": 52, + "end": 48, "start": 46, "type": "REQUEST_EXECUTION" }, { - "end": 56, - "start": 53, + "end": 52, + "start": 49, "type": "RESPONSE_HANDLING" } ], - "title": "redis_v1beta1_generated_cloud_redis_cluster_delete_backup_async.py" + "title": "redis_v1beta1_generated_cloud_redis_cluster_get_acl_policy_async.py" }, { "canonical": true, @@ -775,19 +2071,19 @@ "fullName": "google.cloud.redis_cluster_v1beta1.CloudRedisClusterClient", "shortName": "CloudRedisClusterClient" }, - "fullName": "google.cloud.redis_cluster_v1beta1.CloudRedisClusterClient.delete_backup", + "fullName": "google.cloud.redis_cluster_v1beta1.CloudRedisClusterClient.get_acl_policy", "method": { - "fullName": "google.cloud.redis.cluster.v1beta1.CloudRedisCluster.DeleteBackup", + "fullName": "google.cloud.redis.cluster.v1beta1.CloudRedisCluster.GetAclPolicy", "service": { "fullName": "google.cloud.redis.cluster.v1beta1.CloudRedisCluster", "shortName": "CloudRedisCluster" }, - "shortName": "DeleteBackup" + "shortName": "GetAclPolicy" }, "parameters": [ { "name": "request", - "type": "google.cloud.redis_cluster_v1beta1.types.DeleteBackupRequest" + "type": "google.cloud.redis_cluster_v1beta1.types.GetAclPolicyRequest" }, { "name": "name", @@ -806,22 +2102,22 @@ "type": "Sequence[Tuple[str, Union[str, bytes]]]" } ], - "resultType": "google.api_core.operation.Operation", - "shortName": "delete_backup" + "resultType": "google.cloud.redis_cluster_v1beta1.types.AclPolicy", + "shortName": "get_acl_policy" }, - "description": "Sample for DeleteBackup", - "file": "redis_v1beta1_generated_cloud_redis_cluster_delete_backup_sync.py", + "description": "Sample for GetAclPolicy", + "file": "redis_v1beta1_generated_cloud_redis_cluster_get_acl_policy_sync.py", "language": "PYTHON", "origin": "API_DEFINITION", - "regionTag": "redis_v1beta1_generated_CloudRedisCluster_DeleteBackup_sync", + "regionTag": "redis_v1beta1_generated_CloudRedisCluster_GetAclPolicy_sync", "segments": [ { - "end": 55, + "end": 51, "start": 27, "type": "FULL" }, { - "end": 55, + "end": 51, "start": 27, "type": "SHORT" }, @@ -836,17 +2132,17 @@ "type": "REQUEST_INITIALIZATION" }, { - "end": 52, + "end": 48, "start": 46, "type": "REQUEST_EXECUTION" }, { - "end": 56, - "start": 53, + "end": 52, + "start": 49, "type": "RESPONSE_HANDLING" } ], - "title": "redis_v1beta1_generated_cloud_redis_cluster_delete_backup_sync.py" + "title": "redis_v1beta1_generated_cloud_redis_cluster_get_acl_policy_sync.py" }, { "canonical": true, @@ -856,19 +2152,19 @@ "fullName": "google.cloud.redis_cluster_v1beta1.CloudRedisClusterAsyncClient", "shortName": "CloudRedisClusterAsyncClient" }, - "fullName": "google.cloud.redis_cluster_v1beta1.CloudRedisClusterAsyncClient.delete_cluster", + "fullName": "google.cloud.redis_cluster_v1beta1.CloudRedisClusterAsyncClient.get_auth_token", "method": { - "fullName": "google.cloud.redis.cluster.v1beta1.CloudRedisCluster.DeleteCluster", + "fullName": "google.cloud.redis.cluster.v1beta1.CloudRedisCluster.GetAuthToken", "service": { "fullName": "google.cloud.redis.cluster.v1beta1.CloudRedisCluster", "shortName": "CloudRedisCluster" }, - "shortName": "DeleteCluster" + "shortName": "GetAuthToken" }, "parameters": [ { "name": "request", - "type": "google.cloud.redis_cluster_v1beta1.types.DeleteClusterRequest" + "type": "google.cloud.redis_cluster_v1beta1.types.GetAuthTokenRequest" }, { "name": "name", @@ -887,22 +2183,22 @@ "type": "Sequence[Tuple[str, Union[str, bytes]]]" } ], - "resultType": "google.api_core.operation_async.AsyncOperation", - "shortName": "delete_cluster" + "resultType": "google.cloud.redis_cluster_v1beta1.types.AuthToken", + "shortName": "get_auth_token" }, - "description": "Sample for DeleteCluster", - "file": "redis_v1beta1_generated_cloud_redis_cluster_delete_cluster_async.py", + "description": "Sample for GetAuthToken", + "file": "redis_v1beta1_generated_cloud_redis_cluster_get_auth_token_async.py", "language": "PYTHON", "origin": "API_DEFINITION", - "regionTag": "redis_v1beta1_generated_CloudRedisCluster_DeleteCluster_async", + "regionTag": "redis_v1beta1_generated_CloudRedisCluster_GetAuthToken_async", "segments": [ { - "end": 55, + "end": 51, "start": 27, "type": "FULL" }, { - "end": 55, + "end": 51, "start": 27, "type": "SHORT" }, @@ -917,17 +2213,17 @@ "type": "REQUEST_INITIALIZATION" }, { - "end": 52, + "end": 48, "start": 46, "type": "REQUEST_EXECUTION" }, { - "end": 56, - "start": 53, + "end": 52, + "start": 49, "type": "RESPONSE_HANDLING" } ], - "title": "redis_v1beta1_generated_cloud_redis_cluster_delete_cluster_async.py" + "title": "redis_v1beta1_generated_cloud_redis_cluster_get_auth_token_async.py" }, { "canonical": true, @@ -936,19 +2232,19 @@ "fullName": "google.cloud.redis_cluster_v1beta1.CloudRedisClusterClient", "shortName": "CloudRedisClusterClient" }, - "fullName": "google.cloud.redis_cluster_v1beta1.CloudRedisClusterClient.delete_cluster", + "fullName": "google.cloud.redis_cluster_v1beta1.CloudRedisClusterClient.get_auth_token", "method": { - "fullName": "google.cloud.redis.cluster.v1beta1.CloudRedisCluster.DeleteCluster", + "fullName": "google.cloud.redis.cluster.v1beta1.CloudRedisCluster.GetAuthToken", "service": { "fullName": "google.cloud.redis.cluster.v1beta1.CloudRedisCluster", "shortName": "CloudRedisCluster" }, - "shortName": "DeleteCluster" + "shortName": "GetAuthToken" }, "parameters": [ { "name": "request", - "type": "google.cloud.redis_cluster_v1beta1.types.DeleteClusterRequest" + "type": "google.cloud.redis_cluster_v1beta1.types.GetAuthTokenRequest" }, { "name": "name", @@ -967,22 +2263,22 @@ "type": "Sequence[Tuple[str, Union[str, bytes]]]" } ], - "resultType": "google.api_core.operation.Operation", - "shortName": "delete_cluster" + "resultType": "google.cloud.redis_cluster_v1beta1.types.AuthToken", + "shortName": "get_auth_token" }, - "description": "Sample for DeleteCluster", - "file": "redis_v1beta1_generated_cloud_redis_cluster_delete_cluster_sync.py", + "description": "Sample for GetAuthToken", + "file": "redis_v1beta1_generated_cloud_redis_cluster_get_auth_token_sync.py", "language": "PYTHON", "origin": "API_DEFINITION", - "regionTag": "redis_v1beta1_generated_CloudRedisCluster_DeleteCluster_sync", + "regionTag": "redis_v1beta1_generated_CloudRedisCluster_GetAuthToken_sync", "segments": [ { - "end": 55, + "end": 51, "start": 27, "type": "FULL" }, { - "end": 55, + "end": 51, "start": 27, "type": "SHORT" }, @@ -997,17 +2293,17 @@ "type": "REQUEST_INITIALIZATION" }, { - "end": 52, + "end": 48, "start": 46, "type": "REQUEST_EXECUTION" }, { - "end": 56, - "start": 53, + "end": 52, + "start": 49, "type": "RESPONSE_HANDLING" } ], - "title": "redis_v1beta1_generated_cloud_redis_cluster_delete_cluster_sync.py" + "title": "redis_v1beta1_generated_cloud_redis_cluster_get_auth_token_sync.py" }, { "canonical": true, @@ -1017,19 +2313,23 @@ "fullName": "google.cloud.redis_cluster_v1beta1.CloudRedisClusterAsyncClient", "shortName": "CloudRedisClusterAsyncClient" }, - "fullName": "google.cloud.redis_cluster_v1beta1.CloudRedisClusterAsyncClient.export_backup", + "fullName": "google.cloud.redis_cluster_v1beta1.CloudRedisClusterAsyncClient.get_backup_collection", "method": { - "fullName": "google.cloud.redis.cluster.v1beta1.CloudRedisCluster.ExportBackup", + "fullName": "google.cloud.redis.cluster.v1beta1.CloudRedisCluster.GetBackupCollection", "service": { "fullName": "google.cloud.redis.cluster.v1beta1.CloudRedisCluster", "shortName": "CloudRedisCluster" }, - "shortName": "ExportBackup" + "shortName": "GetBackupCollection" }, "parameters": [ { "name": "request", - "type": "google.cloud.redis_cluster_v1beta1.types.ExportBackupRequest" + "type": "google.cloud.redis_cluster_v1beta1.types.GetBackupCollectionRequest" + }, + { + "name": "name", + "type": "str" }, { "name": "retry", @@ -1044,22 +2344,22 @@ "type": "Sequence[Tuple[str, Union[str, bytes]]]" } ], - "resultType": "google.api_core.operation_async.AsyncOperation", - "shortName": "export_backup" + "resultType": "google.cloud.redis_cluster_v1beta1.types.BackupCollection", + "shortName": "get_backup_collection" }, - "description": "Sample for ExportBackup", - "file": "redis_v1beta1_generated_cloud_redis_cluster_export_backup_async.py", + "description": "Sample for GetBackupCollection", + "file": "redis_v1beta1_generated_cloud_redis_cluster_get_backup_collection_async.py", "language": "PYTHON", "origin": "API_DEFINITION", - "regionTag": "redis_v1beta1_generated_CloudRedisCluster_ExportBackup_async", + "regionTag": "redis_v1beta1_generated_CloudRedisCluster_GetBackupCollection_async", "segments": [ { - "end": 56, + "end": 51, "start": 27, "type": "FULL" }, { - "end": 56, + "end": 51, "start": 27, "type": "SHORT" }, @@ -1069,22 +2369,22 @@ "type": "CLIENT_INITIALIZATION" }, { - "end": 46, + "end": 45, "start": 41, "type": "REQUEST_INITIALIZATION" }, { - "end": 53, - "start": 47, + "end": 48, + "start": 46, "type": "REQUEST_EXECUTION" }, { - "end": 57, - "start": 54, + "end": 52, + "start": 49, "type": "RESPONSE_HANDLING" } ], - "title": "redis_v1beta1_generated_cloud_redis_cluster_export_backup_async.py" + "title": "redis_v1beta1_generated_cloud_redis_cluster_get_backup_collection_async.py" }, { "canonical": true, @@ -1093,19 +2393,23 @@ "fullName": "google.cloud.redis_cluster_v1beta1.CloudRedisClusterClient", "shortName": "CloudRedisClusterClient" }, - "fullName": "google.cloud.redis_cluster_v1beta1.CloudRedisClusterClient.export_backup", + "fullName": "google.cloud.redis_cluster_v1beta1.CloudRedisClusterClient.get_backup_collection", "method": { - "fullName": "google.cloud.redis.cluster.v1beta1.CloudRedisCluster.ExportBackup", + "fullName": "google.cloud.redis.cluster.v1beta1.CloudRedisCluster.GetBackupCollection", "service": { "fullName": "google.cloud.redis.cluster.v1beta1.CloudRedisCluster", "shortName": "CloudRedisCluster" }, - "shortName": "ExportBackup" + "shortName": "GetBackupCollection" }, "parameters": [ { "name": "request", - "type": "google.cloud.redis_cluster_v1beta1.types.ExportBackupRequest" + "type": "google.cloud.redis_cluster_v1beta1.types.GetBackupCollectionRequest" + }, + { + "name": "name", + "type": "str" }, { "name": "retry", @@ -1120,22 +2424,22 @@ "type": "Sequence[Tuple[str, Union[str, bytes]]]" } ], - "resultType": "google.api_core.operation.Operation", - "shortName": "export_backup" + "resultType": "google.cloud.redis_cluster_v1beta1.types.BackupCollection", + "shortName": "get_backup_collection" }, - "description": "Sample for ExportBackup", - "file": "redis_v1beta1_generated_cloud_redis_cluster_export_backup_sync.py", + "description": "Sample for GetBackupCollection", + "file": "redis_v1beta1_generated_cloud_redis_cluster_get_backup_collection_sync.py", "language": "PYTHON", "origin": "API_DEFINITION", - "regionTag": "redis_v1beta1_generated_CloudRedisCluster_ExportBackup_sync", + "regionTag": "redis_v1beta1_generated_CloudRedisCluster_GetBackupCollection_sync", "segments": [ { - "end": 56, + "end": 51, "start": 27, "type": "FULL" }, { - "end": 56, + "end": 51, "start": 27, "type": "SHORT" }, @@ -1145,22 +2449,22 @@ "type": "CLIENT_INITIALIZATION" }, { - "end": 46, + "end": 45, "start": 41, "type": "REQUEST_INITIALIZATION" }, { - "end": 53, - "start": 47, + "end": 48, + "start": 46, "type": "REQUEST_EXECUTION" }, { - "end": 57, - "start": 54, + "end": 52, + "start": 49, "type": "RESPONSE_HANDLING" } ], - "title": "redis_v1beta1_generated_cloud_redis_cluster_export_backup_sync.py" + "title": "redis_v1beta1_generated_cloud_redis_cluster_get_backup_collection_sync.py" }, { "canonical": true, @@ -1170,19 +2474,19 @@ "fullName": "google.cloud.redis_cluster_v1beta1.CloudRedisClusterAsyncClient", "shortName": "CloudRedisClusterAsyncClient" }, - "fullName": "google.cloud.redis_cluster_v1beta1.CloudRedisClusterAsyncClient.get_acl_policy_revision", + "fullName": "google.cloud.redis_cluster_v1beta1.CloudRedisClusterAsyncClient.get_backup", "method": { - "fullName": "google.cloud.redis.cluster.v1beta1.CloudRedisCluster.GetAclPolicyRevision", + "fullName": "google.cloud.redis.cluster.v1beta1.CloudRedisCluster.GetBackup", "service": { "fullName": "google.cloud.redis.cluster.v1beta1.CloudRedisCluster", "shortName": "CloudRedisCluster" }, - "shortName": "GetAclPolicyRevision" + "shortName": "GetBackup" }, "parameters": [ { "name": "request", - "type": "google.cloud.redis_cluster_v1beta1.types.GetAclPolicyRevisionRequest" + "type": "google.cloud.redis_cluster_v1beta1.types.GetBackupRequest" }, { "name": "name", @@ -1201,14 +2505,14 @@ "type": "Sequence[Tuple[str, Union[str, bytes]]]" } ], - "resultType": "google.cloud.redis_cluster_v1beta1.types.AclPolicyRevision", - "shortName": "get_acl_policy_revision" + "resultType": "google.cloud.redis_cluster_v1beta1.types.Backup", + "shortName": "get_backup" }, - "description": "Sample for GetAclPolicyRevision", - "file": "redis_v1beta1_generated_cloud_redis_cluster_get_acl_policy_revision_async.py", + "description": "Sample for GetBackup", + "file": "redis_v1beta1_generated_cloud_redis_cluster_get_backup_async.py", "language": "PYTHON", "origin": "API_DEFINITION", - "regionTag": "redis_v1beta1_generated_CloudRedisCluster_GetAclPolicyRevision_async", + "regionTag": "redis_v1beta1_generated_CloudRedisCluster_GetBackup_async", "segments": [ { "end": 51, @@ -1241,7 +2545,7 @@ "type": "RESPONSE_HANDLING" } ], - "title": "redis_v1beta1_generated_cloud_redis_cluster_get_acl_policy_revision_async.py" + "title": "redis_v1beta1_generated_cloud_redis_cluster_get_backup_async.py" }, { "canonical": true, @@ -1250,19 +2554,19 @@ "fullName": "google.cloud.redis_cluster_v1beta1.CloudRedisClusterClient", "shortName": "CloudRedisClusterClient" }, - "fullName": "google.cloud.redis_cluster_v1beta1.CloudRedisClusterClient.get_acl_policy_revision", + "fullName": "google.cloud.redis_cluster_v1beta1.CloudRedisClusterClient.get_backup", "method": { - "fullName": "google.cloud.redis.cluster.v1beta1.CloudRedisCluster.GetAclPolicyRevision", + "fullName": "google.cloud.redis.cluster.v1beta1.CloudRedisCluster.GetBackup", "service": { "fullName": "google.cloud.redis.cluster.v1beta1.CloudRedisCluster", "shortName": "CloudRedisCluster" }, - "shortName": "GetAclPolicyRevision" + "shortName": "GetBackup" }, "parameters": [ { "name": "request", - "type": "google.cloud.redis_cluster_v1beta1.types.GetAclPolicyRevisionRequest" + "type": "google.cloud.redis_cluster_v1beta1.types.GetBackupRequest" }, { "name": "name", @@ -1281,14 +2585,14 @@ "type": "Sequence[Tuple[str, Union[str, bytes]]]" } ], - "resultType": "google.cloud.redis_cluster_v1beta1.types.AclPolicyRevision", - "shortName": "get_acl_policy_revision" + "resultType": "google.cloud.redis_cluster_v1beta1.types.Backup", + "shortName": "get_backup" }, - "description": "Sample for GetAclPolicyRevision", - "file": "redis_v1beta1_generated_cloud_redis_cluster_get_acl_policy_revision_sync.py", + "description": "Sample for GetBackup", + "file": "redis_v1beta1_generated_cloud_redis_cluster_get_backup_sync.py", "language": "PYTHON", "origin": "API_DEFINITION", - "regionTag": "redis_v1beta1_generated_CloudRedisCluster_GetAclPolicyRevision_sync", + "regionTag": "redis_v1beta1_generated_CloudRedisCluster_GetBackup_sync", "segments": [ { "end": 51, @@ -1321,7 +2625,7 @@ "type": "RESPONSE_HANDLING" } ], - "title": "redis_v1beta1_generated_cloud_redis_cluster_get_acl_policy_revision_sync.py" + "title": "redis_v1beta1_generated_cloud_redis_cluster_get_backup_sync.py" }, { "canonical": true, @@ -1331,19 +2635,19 @@ "fullName": "google.cloud.redis_cluster_v1beta1.CloudRedisClusterAsyncClient", "shortName": "CloudRedisClusterAsyncClient" }, - "fullName": "google.cloud.redis_cluster_v1beta1.CloudRedisClusterAsyncClient.get_acl_policy", + "fullName": "google.cloud.redis_cluster_v1beta1.CloudRedisClusterAsyncClient.get_cluster_certificate_authority", "method": { - "fullName": "google.cloud.redis.cluster.v1beta1.CloudRedisCluster.GetAclPolicy", + "fullName": "google.cloud.redis.cluster.v1beta1.CloudRedisCluster.GetClusterCertificateAuthority", "service": { "fullName": "google.cloud.redis.cluster.v1beta1.CloudRedisCluster", "shortName": "CloudRedisCluster" }, - "shortName": "GetAclPolicy" + "shortName": "GetClusterCertificateAuthority" }, "parameters": [ { "name": "request", - "type": "google.cloud.redis_cluster_v1beta1.types.GetAclPolicyRequest" + "type": "google.cloud.redis_cluster_v1beta1.types.GetClusterCertificateAuthorityRequest" }, { "name": "name", @@ -1362,14 +2666,14 @@ "type": "Sequence[Tuple[str, Union[str, bytes]]]" } ], - "resultType": "google.cloud.redis_cluster_v1beta1.types.AclPolicy", - "shortName": "get_acl_policy" + "resultType": "google.cloud.redis_cluster_v1beta1.types.CertificateAuthority", + "shortName": "get_cluster_certificate_authority" }, - "description": "Sample for GetAclPolicy", - "file": "redis_v1beta1_generated_cloud_redis_cluster_get_acl_policy_async.py", + "description": "Sample for GetClusterCertificateAuthority", + "file": "redis_v1beta1_generated_cloud_redis_cluster_get_cluster_certificate_authority_async.py", "language": "PYTHON", "origin": "API_DEFINITION", - "regionTag": "redis_v1beta1_generated_CloudRedisCluster_GetAclPolicy_async", + "regionTag": "redis_v1beta1_generated_CloudRedisCluster_GetClusterCertificateAuthority_async", "segments": [ { "end": 51, @@ -1402,7 +2706,7 @@ "type": "RESPONSE_HANDLING" } ], - "title": "redis_v1beta1_generated_cloud_redis_cluster_get_acl_policy_async.py" + "title": "redis_v1beta1_generated_cloud_redis_cluster_get_cluster_certificate_authority_async.py" }, { "canonical": true, @@ -1411,19 +2715,19 @@ "fullName": "google.cloud.redis_cluster_v1beta1.CloudRedisClusterClient", "shortName": "CloudRedisClusterClient" }, - "fullName": "google.cloud.redis_cluster_v1beta1.CloudRedisClusterClient.get_acl_policy", + "fullName": "google.cloud.redis_cluster_v1beta1.CloudRedisClusterClient.get_cluster_certificate_authority", "method": { - "fullName": "google.cloud.redis.cluster.v1beta1.CloudRedisCluster.GetAclPolicy", + "fullName": "google.cloud.redis.cluster.v1beta1.CloudRedisCluster.GetClusterCertificateAuthority", "service": { "fullName": "google.cloud.redis.cluster.v1beta1.CloudRedisCluster", "shortName": "CloudRedisCluster" }, - "shortName": "GetAclPolicy" + "shortName": "GetClusterCertificateAuthority" }, "parameters": [ { "name": "request", - "type": "google.cloud.redis_cluster_v1beta1.types.GetAclPolicyRequest" + "type": "google.cloud.redis_cluster_v1beta1.types.GetClusterCertificateAuthorityRequest" }, { "name": "name", @@ -1442,14 +2746,14 @@ "type": "Sequence[Tuple[str, Union[str, bytes]]]" } ], - "resultType": "google.cloud.redis_cluster_v1beta1.types.AclPolicy", - "shortName": "get_acl_policy" + "resultType": "google.cloud.redis_cluster_v1beta1.types.CertificateAuthority", + "shortName": "get_cluster_certificate_authority" }, - "description": "Sample for GetAclPolicy", - "file": "redis_v1beta1_generated_cloud_redis_cluster_get_acl_policy_sync.py", + "description": "Sample for GetClusterCertificateAuthority", + "file": "redis_v1beta1_generated_cloud_redis_cluster_get_cluster_certificate_authority_sync.py", "language": "PYTHON", "origin": "API_DEFINITION", - "regionTag": "redis_v1beta1_generated_CloudRedisCluster_GetAclPolicy_sync", + "regionTag": "redis_v1beta1_generated_CloudRedisCluster_GetClusterCertificateAuthority_sync", "segments": [ { "end": 51, @@ -1482,7 +2786,7 @@ "type": "RESPONSE_HANDLING" } ], - "title": "redis_v1beta1_generated_cloud_redis_cluster_get_acl_policy_sync.py" + "title": "redis_v1beta1_generated_cloud_redis_cluster_get_cluster_certificate_authority_sync.py" }, { "canonical": true, @@ -1492,19 +2796,19 @@ "fullName": "google.cloud.redis_cluster_v1beta1.CloudRedisClusterAsyncClient", "shortName": "CloudRedisClusterAsyncClient" }, - "fullName": "google.cloud.redis_cluster_v1beta1.CloudRedisClusterAsyncClient.get_backup_collection", + "fullName": "google.cloud.redis_cluster_v1beta1.CloudRedisClusterAsyncClient.get_cluster", "method": { - "fullName": "google.cloud.redis.cluster.v1beta1.CloudRedisCluster.GetBackupCollection", + "fullName": "google.cloud.redis.cluster.v1beta1.CloudRedisCluster.GetCluster", "service": { "fullName": "google.cloud.redis.cluster.v1beta1.CloudRedisCluster", "shortName": "CloudRedisCluster" }, - "shortName": "GetBackupCollection" + "shortName": "GetCluster" }, "parameters": [ { "name": "request", - "type": "google.cloud.redis_cluster_v1beta1.types.GetBackupCollectionRequest" + "type": "google.cloud.redis_cluster_v1beta1.types.GetClusterRequest" }, { "name": "name", @@ -1523,14 +2827,14 @@ "type": "Sequence[Tuple[str, Union[str, bytes]]]" } ], - "resultType": "google.cloud.redis_cluster_v1beta1.types.BackupCollection", - "shortName": "get_backup_collection" + "resultType": "google.cloud.redis_cluster_v1beta1.types.Cluster", + "shortName": "get_cluster" }, - "description": "Sample for GetBackupCollection", - "file": "redis_v1beta1_generated_cloud_redis_cluster_get_backup_collection_async.py", + "description": "Sample for GetCluster", + "file": "redis_v1beta1_generated_cloud_redis_cluster_get_cluster_async.py", "language": "PYTHON", "origin": "API_DEFINITION", - "regionTag": "redis_v1beta1_generated_CloudRedisCluster_GetBackupCollection_async", + "regionTag": "redis_v1beta1_generated_CloudRedisCluster_GetCluster_async", "segments": [ { "end": 51, @@ -1563,7 +2867,7 @@ "type": "RESPONSE_HANDLING" } ], - "title": "redis_v1beta1_generated_cloud_redis_cluster_get_backup_collection_async.py" + "title": "redis_v1beta1_generated_cloud_redis_cluster_get_cluster_async.py" }, { "canonical": true, @@ -1572,19 +2876,19 @@ "fullName": "google.cloud.redis_cluster_v1beta1.CloudRedisClusterClient", "shortName": "CloudRedisClusterClient" }, - "fullName": "google.cloud.redis_cluster_v1beta1.CloudRedisClusterClient.get_backup_collection", + "fullName": "google.cloud.redis_cluster_v1beta1.CloudRedisClusterClient.get_cluster", "method": { - "fullName": "google.cloud.redis.cluster.v1beta1.CloudRedisCluster.GetBackupCollection", + "fullName": "google.cloud.redis.cluster.v1beta1.CloudRedisCluster.GetCluster", "service": { "fullName": "google.cloud.redis.cluster.v1beta1.CloudRedisCluster", "shortName": "CloudRedisCluster" }, - "shortName": "GetBackupCollection" + "shortName": "GetCluster" }, "parameters": [ { "name": "request", - "type": "google.cloud.redis_cluster_v1beta1.types.GetBackupCollectionRequest" + "type": "google.cloud.redis_cluster_v1beta1.types.GetClusterRequest" }, { "name": "name", @@ -1603,14 +2907,14 @@ "type": "Sequence[Tuple[str, Union[str, bytes]]]" } ], - "resultType": "google.cloud.redis_cluster_v1beta1.types.BackupCollection", - "shortName": "get_backup_collection" + "resultType": "google.cloud.redis_cluster_v1beta1.types.Cluster", + "shortName": "get_cluster" }, - "description": "Sample for GetBackupCollection", - "file": "redis_v1beta1_generated_cloud_redis_cluster_get_backup_collection_sync.py", + "description": "Sample for GetCluster", + "file": "redis_v1beta1_generated_cloud_redis_cluster_get_cluster_sync.py", "language": "PYTHON", "origin": "API_DEFINITION", - "regionTag": "redis_v1beta1_generated_CloudRedisCluster_GetBackupCollection_sync", + "regionTag": "redis_v1beta1_generated_CloudRedisCluster_GetCluster_sync", "segments": [ { "end": 51, @@ -1643,7 +2947,7 @@ "type": "RESPONSE_HANDLING" } ], - "title": "redis_v1beta1_generated_cloud_redis_cluster_get_backup_collection_sync.py" + "title": "redis_v1beta1_generated_cloud_redis_cluster_get_cluster_sync.py" }, { "canonical": true, @@ -1653,19 +2957,19 @@ "fullName": "google.cloud.redis_cluster_v1beta1.CloudRedisClusterAsyncClient", "shortName": "CloudRedisClusterAsyncClient" }, - "fullName": "google.cloud.redis_cluster_v1beta1.CloudRedisClusterAsyncClient.get_backup", + "fullName": "google.cloud.redis_cluster_v1beta1.CloudRedisClusterAsyncClient.get_shared_regional_certificate_authority", "method": { - "fullName": "google.cloud.redis.cluster.v1beta1.CloudRedisCluster.GetBackup", + "fullName": "google.cloud.redis.cluster.v1beta1.CloudRedisCluster.GetSharedRegionalCertificateAuthority", "service": { "fullName": "google.cloud.redis.cluster.v1beta1.CloudRedisCluster", "shortName": "CloudRedisCluster" }, - "shortName": "GetBackup" + "shortName": "GetSharedRegionalCertificateAuthority" }, "parameters": [ { "name": "request", - "type": "google.cloud.redis_cluster_v1beta1.types.GetBackupRequest" + "type": "google.cloud.redis_cluster_v1beta1.types.GetSharedRegionalCertificateAuthorityRequest" }, { "name": "name", @@ -1684,14 +2988,14 @@ "type": "Sequence[Tuple[str, Union[str, bytes]]]" } ], - "resultType": "google.cloud.redis_cluster_v1beta1.types.Backup", - "shortName": "get_backup" + "resultType": "google.cloud.redis_cluster_v1beta1.types.SharedRegionalCertificateAuthority", + "shortName": "get_shared_regional_certificate_authority" }, - "description": "Sample for GetBackup", - "file": "redis_v1beta1_generated_cloud_redis_cluster_get_backup_async.py", + "description": "Sample for GetSharedRegionalCertificateAuthority", + "file": "redis_v1beta1_generated_cloud_redis_cluster_get_shared_regional_certificate_authority_async.py", "language": "PYTHON", "origin": "API_DEFINITION", - "regionTag": "redis_v1beta1_generated_CloudRedisCluster_GetBackup_async", + "regionTag": "redis_v1beta1_generated_CloudRedisCluster_GetSharedRegionalCertificateAuthority_async", "segments": [ { "end": 51, @@ -1724,7 +3028,7 @@ "type": "RESPONSE_HANDLING" } ], - "title": "redis_v1beta1_generated_cloud_redis_cluster_get_backup_async.py" + "title": "redis_v1beta1_generated_cloud_redis_cluster_get_shared_regional_certificate_authority_async.py" }, { "canonical": true, @@ -1733,19 +3037,19 @@ "fullName": "google.cloud.redis_cluster_v1beta1.CloudRedisClusterClient", "shortName": "CloudRedisClusterClient" }, - "fullName": "google.cloud.redis_cluster_v1beta1.CloudRedisClusterClient.get_backup", + "fullName": "google.cloud.redis_cluster_v1beta1.CloudRedisClusterClient.get_shared_regional_certificate_authority", "method": { - "fullName": "google.cloud.redis.cluster.v1beta1.CloudRedisCluster.GetBackup", + "fullName": "google.cloud.redis.cluster.v1beta1.CloudRedisCluster.GetSharedRegionalCertificateAuthority", "service": { "fullName": "google.cloud.redis.cluster.v1beta1.CloudRedisCluster", "shortName": "CloudRedisCluster" }, - "shortName": "GetBackup" + "shortName": "GetSharedRegionalCertificateAuthority" }, "parameters": [ { "name": "request", - "type": "google.cloud.redis_cluster_v1beta1.types.GetBackupRequest" + "type": "google.cloud.redis_cluster_v1beta1.types.GetSharedRegionalCertificateAuthorityRequest" }, { "name": "name", @@ -1764,14 +3068,14 @@ "type": "Sequence[Tuple[str, Union[str, bytes]]]" } ], - "resultType": "google.cloud.redis_cluster_v1beta1.types.Backup", - "shortName": "get_backup" + "resultType": "google.cloud.redis_cluster_v1beta1.types.SharedRegionalCertificateAuthority", + "shortName": "get_shared_regional_certificate_authority" }, - "description": "Sample for GetBackup", - "file": "redis_v1beta1_generated_cloud_redis_cluster_get_backup_sync.py", + "description": "Sample for GetSharedRegionalCertificateAuthority", + "file": "redis_v1beta1_generated_cloud_redis_cluster_get_shared_regional_certificate_authority_sync.py", "language": "PYTHON", "origin": "API_DEFINITION", - "regionTag": "redis_v1beta1_generated_CloudRedisCluster_GetBackup_sync", + "regionTag": "redis_v1beta1_generated_CloudRedisCluster_GetSharedRegionalCertificateAuthority_sync", "segments": [ { "end": 51, @@ -1804,7 +3108,7 @@ "type": "RESPONSE_HANDLING" } ], - "title": "redis_v1beta1_generated_cloud_redis_cluster_get_backup_sync.py" + "title": "redis_v1beta1_generated_cloud_redis_cluster_get_shared_regional_certificate_authority_sync.py" }, { "canonical": true, @@ -1814,19 +3118,19 @@ "fullName": "google.cloud.redis_cluster_v1beta1.CloudRedisClusterAsyncClient", "shortName": "CloudRedisClusterAsyncClient" }, - "fullName": "google.cloud.redis_cluster_v1beta1.CloudRedisClusterAsyncClient.get_cluster_certificate_authority", + "fullName": "google.cloud.redis_cluster_v1beta1.CloudRedisClusterAsyncClient.get_token_auth_user", "method": { - "fullName": "google.cloud.redis.cluster.v1beta1.CloudRedisCluster.GetClusterCertificateAuthority", + "fullName": "google.cloud.redis.cluster.v1beta1.CloudRedisCluster.GetTokenAuthUser", "service": { "fullName": "google.cloud.redis.cluster.v1beta1.CloudRedisCluster", "shortName": "CloudRedisCluster" }, - "shortName": "GetClusterCertificateAuthority" + "shortName": "GetTokenAuthUser" }, "parameters": [ { "name": "request", - "type": "google.cloud.redis_cluster_v1beta1.types.GetClusterCertificateAuthorityRequest" + "type": "google.cloud.redis_cluster_v1beta1.types.GetTokenAuthUserRequest" }, { "name": "name", @@ -1845,14 +3149,14 @@ "type": "Sequence[Tuple[str, Union[str, bytes]]]" } ], - "resultType": "google.cloud.redis_cluster_v1beta1.types.CertificateAuthority", - "shortName": "get_cluster_certificate_authority" + "resultType": "google.cloud.redis_cluster_v1beta1.types.TokenAuthUser", + "shortName": "get_token_auth_user" }, - "description": "Sample for GetClusterCertificateAuthority", - "file": "redis_v1beta1_generated_cloud_redis_cluster_get_cluster_certificate_authority_async.py", + "description": "Sample for GetTokenAuthUser", + "file": "redis_v1beta1_generated_cloud_redis_cluster_get_token_auth_user_async.py", "language": "PYTHON", "origin": "API_DEFINITION", - "regionTag": "redis_v1beta1_generated_CloudRedisCluster_GetClusterCertificateAuthority_async", + "regionTag": "redis_v1beta1_generated_CloudRedisCluster_GetTokenAuthUser_async", "segments": [ { "end": 51, @@ -1885,7 +3189,7 @@ "type": "RESPONSE_HANDLING" } ], - "title": "redis_v1beta1_generated_cloud_redis_cluster_get_cluster_certificate_authority_async.py" + "title": "redis_v1beta1_generated_cloud_redis_cluster_get_token_auth_user_async.py" }, { "canonical": true, @@ -1894,19 +3198,19 @@ "fullName": "google.cloud.redis_cluster_v1beta1.CloudRedisClusterClient", "shortName": "CloudRedisClusterClient" }, - "fullName": "google.cloud.redis_cluster_v1beta1.CloudRedisClusterClient.get_cluster_certificate_authority", + "fullName": "google.cloud.redis_cluster_v1beta1.CloudRedisClusterClient.get_token_auth_user", "method": { - "fullName": "google.cloud.redis.cluster.v1beta1.CloudRedisCluster.GetClusterCertificateAuthority", + "fullName": "google.cloud.redis.cluster.v1beta1.CloudRedisCluster.GetTokenAuthUser", "service": { "fullName": "google.cloud.redis.cluster.v1beta1.CloudRedisCluster", "shortName": "CloudRedisCluster" }, - "shortName": "GetClusterCertificateAuthority" + "shortName": "GetTokenAuthUser" }, "parameters": [ { "name": "request", - "type": "google.cloud.redis_cluster_v1beta1.types.GetClusterCertificateAuthorityRequest" + "type": "google.cloud.redis_cluster_v1beta1.types.GetTokenAuthUserRequest" }, { "name": "name", @@ -1925,14 +3229,14 @@ "type": "Sequence[Tuple[str, Union[str, bytes]]]" } ], - "resultType": "google.cloud.redis_cluster_v1beta1.types.CertificateAuthority", - "shortName": "get_cluster_certificate_authority" + "resultType": "google.cloud.redis_cluster_v1beta1.types.TokenAuthUser", + "shortName": "get_token_auth_user" }, - "description": "Sample for GetClusterCertificateAuthority", - "file": "redis_v1beta1_generated_cloud_redis_cluster_get_cluster_certificate_authority_sync.py", + "description": "Sample for GetTokenAuthUser", + "file": "redis_v1beta1_generated_cloud_redis_cluster_get_token_auth_user_sync.py", "language": "PYTHON", "origin": "API_DEFINITION", - "regionTag": "redis_v1beta1_generated_CloudRedisCluster_GetClusterCertificateAuthority_sync", + "regionTag": "redis_v1beta1_generated_CloudRedisCluster_GetTokenAuthUser_sync", "segments": [ { "end": 51, @@ -1965,7 +3269,7 @@ "type": "RESPONSE_HANDLING" } ], - "title": "redis_v1beta1_generated_cloud_redis_cluster_get_cluster_certificate_authority_sync.py" + "title": "redis_v1beta1_generated_cloud_redis_cluster_get_token_auth_user_sync.py" }, { "canonical": true, @@ -1975,22 +3279,22 @@ "fullName": "google.cloud.redis_cluster_v1beta1.CloudRedisClusterAsyncClient", "shortName": "CloudRedisClusterAsyncClient" }, - "fullName": "google.cloud.redis_cluster_v1beta1.CloudRedisClusterAsyncClient.get_cluster", + "fullName": "google.cloud.redis_cluster_v1beta1.CloudRedisClusterAsyncClient.list_acl_policies", "method": { - "fullName": "google.cloud.redis.cluster.v1beta1.CloudRedisCluster.GetCluster", + "fullName": "google.cloud.redis.cluster.v1beta1.CloudRedisCluster.ListAclPolicies", "service": { "fullName": "google.cloud.redis.cluster.v1beta1.CloudRedisCluster", "shortName": "CloudRedisCluster" }, - "shortName": "GetCluster" + "shortName": "ListAclPolicies" }, "parameters": [ { "name": "request", - "type": "google.cloud.redis_cluster_v1beta1.types.GetClusterRequest" + "type": "google.cloud.redis_cluster_v1beta1.types.ListAclPoliciesRequest" }, { - "name": "name", + "name": "parent", "type": "str" }, { @@ -2006,22 +3310,22 @@ "type": "Sequence[Tuple[str, Union[str, bytes]]]" } ], - "resultType": "google.cloud.redis_cluster_v1beta1.types.Cluster", - "shortName": "get_cluster" + "resultType": "google.cloud.redis_cluster_v1beta1.services.cloud_redis_cluster.pagers.ListAclPoliciesAsyncPager", + "shortName": "list_acl_policies" }, - "description": "Sample for GetCluster", - "file": "redis_v1beta1_generated_cloud_redis_cluster_get_cluster_async.py", + "description": "Sample for ListAclPolicies", + "file": "redis_v1beta1_generated_cloud_redis_cluster_list_acl_policies_async.py", "language": "PYTHON", "origin": "API_DEFINITION", - "regionTag": "redis_v1beta1_generated_CloudRedisCluster_GetCluster_async", + "regionTag": "redis_v1beta1_generated_CloudRedisCluster_ListAclPolicies_async", "segments": [ { - "end": 51, + "end": 52, "start": 27, "type": "FULL" }, { - "end": 51, + "end": 52, "start": 27, "type": "SHORT" }, @@ -2041,12 +3345,12 @@ "type": "REQUEST_EXECUTION" }, { - "end": 52, + "end": 53, "start": 49, "type": "RESPONSE_HANDLING" } ], - "title": "redis_v1beta1_generated_cloud_redis_cluster_get_cluster_async.py" + "title": "redis_v1beta1_generated_cloud_redis_cluster_list_acl_policies_async.py" }, { "canonical": true, @@ -2055,22 +3359,22 @@ "fullName": "google.cloud.redis_cluster_v1beta1.CloudRedisClusterClient", "shortName": "CloudRedisClusterClient" }, - "fullName": "google.cloud.redis_cluster_v1beta1.CloudRedisClusterClient.get_cluster", + "fullName": "google.cloud.redis_cluster_v1beta1.CloudRedisClusterClient.list_acl_policies", "method": { - "fullName": "google.cloud.redis.cluster.v1beta1.CloudRedisCluster.GetCluster", + "fullName": "google.cloud.redis.cluster.v1beta1.CloudRedisCluster.ListAclPolicies", "service": { "fullName": "google.cloud.redis.cluster.v1beta1.CloudRedisCluster", "shortName": "CloudRedisCluster" }, - "shortName": "GetCluster" + "shortName": "ListAclPolicies" }, "parameters": [ { "name": "request", - "type": "google.cloud.redis_cluster_v1beta1.types.GetClusterRequest" + "type": "google.cloud.redis_cluster_v1beta1.types.ListAclPoliciesRequest" }, { - "name": "name", + "name": "parent", "type": "str" }, { @@ -2086,22 +3390,22 @@ "type": "Sequence[Tuple[str, Union[str, bytes]]]" } ], - "resultType": "google.cloud.redis_cluster_v1beta1.types.Cluster", - "shortName": "get_cluster" + "resultType": "google.cloud.redis_cluster_v1beta1.services.cloud_redis_cluster.pagers.ListAclPoliciesPager", + "shortName": "list_acl_policies" }, - "description": "Sample for GetCluster", - "file": "redis_v1beta1_generated_cloud_redis_cluster_get_cluster_sync.py", + "description": "Sample for ListAclPolicies", + "file": "redis_v1beta1_generated_cloud_redis_cluster_list_acl_policies_sync.py", "language": "PYTHON", "origin": "API_DEFINITION", - "regionTag": "redis_v1beta1_generated_CloudRedisCluster_GetCluster_sync", + "regionTag": "redis_v1beta1_generated_CloudRedisCluster_ListAclPolicies_sync", "segments": [ { - "end": 51, + "end": 52, "start": 27, "type": "FULL" }, { - "end": 51, + "end": 52, "start": 27, "type": "SHORT" }, @@ -2121,12 +3425,12 @@ "type": "REQUEST_EXECUTION" }, { - "end": 52, + "end": 53, "start": 49, "type": "RESPONSE_HANDLING" } ], - "title": "redis_v1beta1_generated_cloud_redis_cluster_get_cluster_sync.py" + "title": "redis_v1beta1_generated_cloud_redis_cluster_list_acl_policies_sync.py" }, { "canonical": true, @@ -2136,22 +3440,22 @@ "fullName": "google.cloud.redis_cluster_v1beta1.CloudRedisClusterAsyncClient", "shortName": "CloudRedisClusterAsyncClient" }, - "fullName": "google.cloud.redis_cluster_v1beta1.CloudRedisClusterAsyncClient.get_shared_regional_certificate_authority", + "fullName": "google.cloud.redis_cluster_v1beta1.CloudRedisClusterAsyncClient.list_acl_policy_revisions", "method": { - "fullName": "google.cloud.redis.cluster.v1beta1.CloudRedisCluster.GetSharedRegionalCertificateAuthority", + "fullName": "google.cloud.redis.cluster.v1beta1.CloudRedisCluster.ListAclPolicyRevisions", "service": { "fullName": "google.cloud.redis.cluster.v1beta1.CloudRedisCluster", "shortName": "CloudRedisCluster" }, - "shortName": "GetSharedRegionalCertificateAuthority" + "shortName": "ListAclPolicyRevisions" }, "parameters": [ { "name": "request", - "type": "google.cloud.redis_cluster_v1beta1.types.GetSharedRegionalCertificateAuthorityRequest" + "type": "google.cloud.redis_cluster_v1beta1.types.ListAclPolicyRevisionsRequest" }, { - "name": "name", + "name": "parent", "type": "str" }, { @@ -2167,22 +3471,22 @@ "type": "Sequence[Tuple[str, Union[str, bytes]]]" } ], - "resultType": "google.cloud.redis_cluster_v1beta1.types.SharedRegionalCertificateAuthority", - "shortName": "get_shared_regional_certificate_authority" + "resultType": "google.cloud.redis_cluster_v1beta1.services.cloud_redis_cluster.pagers.ListAclPolicyRevisionsAsyncPager", + "shortName": "list_acl_policy_revisions" }, - "description": "Sample for GetSharedRegionalCertificateAuthority", - "file": "redis_v1beta1_generated_cloud_redis_cluster_get_shared_regional_certificate_authority_async.py", + "description": "Sample for ListAclPolicyRevisions", + "file": "redis_v1beta1_generated_cloud_redis_cluster_list_acl_policy_revisions_async.py", "language": "PYTHON", "origin": "API_DEFINITION", - "regionTag": "redis_v1beta1_generated_CloudRedisCluster_GetSharedRegionalCertificateAuthority_async", + "regionTag": "redis_v1beta1_generated_CloudRedisCluster_ListAclPolicyRevisions_async", "segments": [ { - "end": 51, + "end": 52, "start": 27, "type": "FULL" }, { - "end": 51, + "end": 52, "start": 27, "type": "SHORT" }, @@ -2202,12 +3506,12 @@ "type": "REQUEST_EXECUTION" }, { - "end": 52, + "end": 53, "start": 49, "type": "RESPONSE_HANDLING" } ], - "title": "redis_v1beta1_generated_cloud_redis_cluster_get_shared_regional_certificate_authority_async.py" + "title": "redis_v1beta1_generated_cloud_redis_cluster_list_acl_policy_revisions_async.py" }, { "canonical": true, @@ -2216,22 +3520,22 @@ "fullName": "google.cloud.redis_cluster_v1beta1.CloudRedisClusterClient", "shortName": "CloudRedisClusterClient" }, - "fullName": "google.cloud.redis_cluster_v1beta1.CloudRedisClusterClient.get_shared_regional_certificate_authority", + "fullName": "google.cloud.redis_cluster_v1beta1.CloudRedisClusterClient.list_acl_policy_revisions", "method": { - "fullName": "google.cloud.redis.cluster.v1beta1.CloudRedisCluster.GetSharedRegionalCertificateAuthority", + "fullName": "google.cloud.redis.cluster.v1beta1.CloudRedisCluster.ListAclPolicyRevisions", "service": { "fullName": "google.cloud.redis.cluster.v1beta1.CloudRedisCluster", "shortName": "CloudRedisCluster" }, - "shortName": "GetSharedRegionalCertificateAuthority" + "shortName": "ListAclPolicyRevisions" }, "parameters": [ { "name": "request", - "type": "google.cloud.redis_cluster_v1beta1.types.GetSharedRegionalCertificateAuthorityRequest" + "type": "google.cloud.redis_cluster_v1beta1.types.ListAclPolicyRevisionsRequest" }, { - "name": "name", + "name": "parent", "type": "str" }, { @@ -2247,22 +3551,22 @@ "type": "Sequence[Tuple[str, Union[str, bytes]]]" } ], - "resultType": "google.cloud.redis_cluster_v1beta1.types.SharedRegionalCertificateAuthority", - "shortName": "get_shared_regional_certificate_authority" + "resultType": "google.cloud.redis_cluster_v1beta1.services.cloud_redis_cluster.pagers.ListAclPolicyRevisionsPager", + "shortName": "list_acl_policy_revisions" }, - "description": "Sample for GetSharedRegionalCertificateAuthority", - "file": "redis_v1beta1_generated_cloud_redis_cluster_get_shared_regional_certificate_authority_sync.py", + "description": "Sample for ListAclPolicyRevisions", + "file": "redis_v1beta1_generated_cloud_redis_cluster_list_acl_policy_revisions_sync.py", "language": "PYTHON", "origin": "API_DEFINITION", - "regionTag": "redis_v1beta1_generated_CloudRedisCluster_GetSharedRegionalCertificateAuthority_sync", + "regionTag": "redis_v1beta1_generated_CloudRedisCluster_ListAclPolicyRevisions_sync", "segments": [ { - "end": 51, + "end": 52, "start": 27, "type": "FULL" }, { - "end": 51, + "end": 52, "start": 27, "type": "SHORT" }, @@ -2282,12 +3586,12 @@ "type": "REQUEST_EXECUTION" }, { - "end": 52, + "end": 53, "start": 49, "type": "RESPONSE_HANDLING" } ], - "title": "redis_v1beta1_generated_cloud_redis_cluster_get_shared_regional_certificate_authority_sync.py" + "title": "redis_v1beta1_generated_cloud_redis_cluster_list_acl_policy_revisions_sync.py" }, { "canonical": true, @@ -2297,19 +3601,19 @@ "fullName": "google.cloud.redis_cluster_v1beta1.CloudRedisClusterAsyncClient", "shortName": "CloudRedisClusterAsyncClient" }, - "fullName": "google.cloud.redis_cluster_v1beta1.CloudRedisClusterAsyncClient.list_acl_policies", + "fullName": "google.cloud.redis_cluster_v1beta1.CloudRedisClusterAsyncClient.list_auth_tokens", "method": { - "fullName": "google.cloud.redis.cluster.v1beta1.CloudRedisCluster.ListAclPolicies", + "fullName": "google.cloud.redis.cluster.v1beta1.CloudRedisCluster.ListAuthTokens", "service": { "fullName": "google.cloud.redis.cluster.v1beta1.CloudRedisCluster", "shortName": "CloudRedisCluster" }, - "shortName": "ListAclPolicies" + "shortName": "ListAuthTokens" }, "parameters": [ { "name": "request", - "type": "google.cloud.redis_cluster_v1beta1.types.ListAclPoliciesRequest" + "type": "google.cloud.redis_cluster_v1beta1.types.ListAuthTokensRequest" }, { "name": "parent", @@ -2328,14 +3632,14 @@ "type": "Sequence[Tuple[str, Union[str, bytes]]]" } ], - "resultType": "google.cloud.redis_cluster_v1beta1.services.cloud_redis_cluster.pagers.ListAclPoliciesAsyncPager", - "shortName": "list_acl_policies" + "resultType": "google.cloud.redis_cluster_v1beta1.services.cloud_redis_cluster.pagers.ListAuthTokensAsyncPager", + "shortName": "list_auth_tokens" }, - "description": "Sample for ListAclPolicies", - "file": "redis_v1beta1_generated_cloud_redis_cluster_list_acl_policies_async.py", + "description": "Sample for ListAuthTokens", + "file": "redis_v1beta1_generated_cloud_redis_cluster_list_auth_tokens_async.py", "language": "PYTHON", "origin": "API_DEFINITION", - "regionTag": "redis_v1beta1_generated_CloudRedisCluster_ListAclPolicies_async", + "regionTag": "redis_v1beta1_generated_CloudRedisCluster_ListAuthTokens_async", "segments": [ { "end": 52, @@ -2368,7 +3672,7 @@ "type": "RESPONSE_HANDLING" } ], - "title": "redis_v1beta1_generated_cloud_redis_cluster_list_acl_policies_async.py" + "title": "redis_v1beta1_generated_cloud_redis_cluster_list_auth_tokens_async.py" }, { "canonical": true, @@ -2377,19 +3681,19 @@ "fullName": "google.cloud.redis_cluster_v1beta1.CloudRedisClusterClient", "shortName": "CloudRedisClusterClient" }, - "fullName": "google.cloud.redis_cluster_v1beta1.CloudRedisClusterClient.list_acl_policies", + "fullName": "google.cloud.redis_cluster_v1beta1.CloudRedisClusterClient.list_auth_tokens", "method": { - "fullName": "google.cloud.redis.cluster.v1beta1.CloudRedisCluster.ListAclPolicies", + "fullName": "google.cloud.redis.cluster.v1beta1.CloudRedisCluster.ListAuthTokens", "service": { "fullName": "google.cloud.redis.cluster.v1beta1.CloudRedisCluster", "shortName": "CloudRedisCluster" }, - "shortName": "ListAclPolicies" + "shortName": "ListAuthTokens" }, "parameters": [ { "name": "request", - "type": "google.cloud.redis_cluster_v1beta1.types.ListAclPoliciesRequest" + "type": "google.cloud.redis_cluster_v1beta1.types.ListAuthTokensRequest" }, { "name": "parent", @@ -2408,14 +3712,14 @@ "type": "Sequence[Tuple[str, Union[str, bytes]]]" } ], - "resultType": "google.cloud.redis_cluster_v1beta1.services.cloud_redis_cluster.pagers.ListAclPoliciesPager", - "shortName": "list_acl_policies" + "resultType": "google.cloud.redis_cluster_v1beta1.services.cloud_redis_cluster.pagers.ListAuthTokensPager", + "shortName": "list_auth_tokens" }, - "description": "Sample for ListAclPolicies", - "file": "redis_v1beta1_generated_cloud_redis_cluster_list_acl_policies_sync.py", + "description": "Sample for ListAuthTokens", + "file": "redis_v1beta1_generated_cloud_redis_cluster_list_auth_tokens_sync.py", "language": "PYTHON", "origin": "API_DEFINITION", - "regionTag": "redis_v1beta1_generated_CloudRedisCluster_ListAclPolicies_sync", + "regionTag": "redis_v1beta1_generated_CloudRedisCluster_ListAuthTokens_sync", "segments": [ { "end": 52, @@ -2448,7 +3752,7 @@ "type": "RESPONSE_HANDLING" } ], - "title": "redis_v1beta1_generated_cloud_redis_cluster_list_acl_policies_sync.py" + "title": "redis_v1beta1_generated_cloud_redis_cluster_list_auth_tokens_sync.py" }, { "canonical": true, @@ -2458,19 +3762,19 @@ "fullName": "google.cloud.redis_cluster_v1beta1.CloudRedisClusterAsyncClient", "shortName": "CloudRedisClusterAsyncClient" }, - "fullName": "google.cloud.redis_cluster_v1beta1.CloudRedisClusterAsyncClient.list_acl_policy_revisions", + "fullName": "google.cloud.redis_cluster_v1beta1.CloudRedisClusterAsyncClient.list_backup_collections", "method": { - "fullName": "google.cloud.redis.cluster.v1beta1.CloudRedisCluster.ListAclPolicyRevisions", + "fullName": "google.cloud.redis.cluster.v1beta1.CloudRedisCluster.ListBackupCollections", "service": { "fullName": "google.cloud.redis.cluster.v1beta1.CloudRedisCluster", "shortName": "CloudRedisCluster" }, - "shortName": "ListAclPolicyRevisions" + "shortName": "ListBackupCollections" }, "parameters": [ { "name": "request", - "type": "google.cloud.redis_cluster_v1beta1.types.ListAclPolicyRevisionsRequest" + "type": "google.cloud.redis_cluster_v1beta1.types.ListBackupCollectionsRequest" }, { "name": "parent", @@ -2489,14 +3793,14 @@ "type": "Sequence[Tuple[str, Union[str, bytes]]]" } ], - "resultType": "google.cloud.redis_cluster_v1beta1.services.cloud_redis_cluster.pagers.ListAclPolicyRevisionsAsyncPager", - "shortName": "list_acl_policy_revisions" + "resultType": "google.cloud.redis_cluster_v1beta1.services.cloud_redis_cluster.pagers.ListBackupCollectionsAsyncPager", + "shortName": "list_backup_collections" }, - "description": "Sample for ListAclPolicyRevisions", - "file": "redis_v1beta1_generated_cloud_redis_cluster_list_acl_policy_revisions_async.py", + "description": "Sample for ListBackupCollections", + "file": "redis_v1beta1_generated_cloud_redis_cluster_list_backup_collections_async.py", "language": "PYTHON", "origin": "API_DEFINITION", - "regionTag": "redis_v1beta1_generated_CloudRedisCluster_ListAclPolicyRevisions_async", + "regionTag": "redis_v1beta1_generated_CloudRedisCluster_ListBackupCollections_async", "segments": [ { "end": 52, @@ -2529,7 +3833,7 @@ "type": "RESPONSE_HANDLING" } ], - "title": "redis_v1beta1_generated_cloud_redis_cluster_list_acl_policy_revisions_async.py" + "title": "redis_v1beta1_generated_cloud_redis_cluster_list_backup_collections_async.py" }, { "canonical": true, @@ -2538,19 +3842,19 @@ "fullName": "google.cloud.redis_cluster_v1beta1.CloudRedisClusterClient", "shortName": "CloudRedisClusterClient" }, - "fullName": "google.cloud.redis_cluster_v1beta1.CloudRedisClusterClient.list_acl_policy_revisions", + "fullName": "google.cloud.redis_cluster_v1beta1.CloudRedisClusterClient.list_backup_collections", "method": { - "fullName": "google.cloud.redis.cluster.v1beta1.CloudRedisCluster.ListAclPolicyRevisions", + "fullName": "google.cloud.redis.cluster.v1beta1.CloudRedisCluster.ListBackupCollections", "service": { "fullName": "google.cloud.redis.cluster.v1beta1.CloudRedisCluster", "shortName": "CloudRedisCluster" }, - "shortName": "ListAclPolicyRevisions" + "shortName": "ListBackupCollections" }, "parameters": [ { "name": "request", - "type": "google.cloud.redis_cluster_v1beta1.types.ListAclPolicyRevisionsRequest" + "type": "google.cloud.redis_cluster_v1beta1.types.ListBackupCollectionsRequest" }, { "name": "parent", @@ -2569,14 +3873,14 @@ "type": "Sequence[Tuple[str, Union[str, bytes]]]" } ], - "resultType": "google.cloud.redis_cluster_v1beta1.services.cloud_redis_cluster.pagers.ListAclPolicyRevisionsPager", - "shortName": "list_acl_policy_revisions" + "resultType": "google.cloud.redis_cluster_v1beta1.services.cloud_redis_cluster.pagers.ListBackupCollectionsPager", + "shortName": "list_backup_collections" }, - "description": "Sample for ListAclPolicyRevisions", - "file": "redis_v1beta1_generated_cloud_redis_cluster_list_acl_policy_revisions_sync.py", + "description": "Sample for ListBackupCollections", + "file": "redis_v1beta1_generated_cloud_redis_cluster_list_backup_collections_sync.py", "language": "PYTHON", "origin": "API_DEFINITION", - "regionTag": "redis_v1beta1_generated_CloudRedisCluster_ListAclPolicyRevisions_sync", + "regionTag": "redis_v1beta1_generated_CloudRedisCluster_ListBackupCollections_sync", "segments": [ { "end": 52, @@ -2609,7 +3913,7 @@ "type": "RESPONSE_HANDLING" } ], - "title": "redis_v1beta1_generated_cloud_redis_cluster_list_acl_policy_revisions_sync.py" + "title": "redis_v1beta1_generated_cloud_redis_cluster_list_backup_collections_sync.py" }, { "canonical": true, @@ -2619,19 +3923,19 @@ "fullName": "google.cloud.redis_cluster_v1beta1.CloudRedisClusterAsyncClient", "shortName": "CloudRedisClusterAsyncClient" }, - "fullName": "google.cloud.redis_cluster_v1beta1.CloudRedisClusterAsyncClient.list_backup_collections", + "fullName": "google.cloud.redis_cluster_v1beta1.CloudRedisClusterAsyncClient.list_backups", "method": { - "fullName": "google.cloud.redis.cluster.v1beta1.CloudRedisCluster.ListBackupCollections", + "fullName": "google.cloud.redis.cluster.v1beta1.CloudRedisCluster.ListBackups", "service": { "fullName": "google.cloud.redis.cluster.v1beta1.CloudRedisCluster", "shortName": "CloudRedisCluster" }, - "shortName": "ListBackupCollections" + "shortName": "ListBackups" }, "parameters": [ { "name": "request", - "type": "google.cloud.redis_cluster_v1beta1.types.ListBackupCollectionsRequest" + "type": "google.cloud.redis_cluster_v1beta1.types.ListBackupsRequest" }, { "name": "parent", @@ -2650,14 +3954,14 @@ "type": "Sequence[Tuple[str, Union[str, bytes]]]" } ], - "resultType": "google.cloud.redis_cluster_v1beta1.services.cloud_redis_cluster.pagers.ListBackupCollectionsAsyncPager", - "shortName": "list_backup_collections" + "resultType": "google.cloud.redis_cluster_v1beta1.services.cloud_redis_cluster.pagers.ListBackupsAsyncPager", + "shortName": "list_backups" }, - "description": "Sample for ListBackupCollections", - "file": "redis_v1beta1_generated_cloud_redis_cluster_list_backup_collections_async.py", + "description": "Sample for ListBackups", + "file": "redis_v1beta1_generated_cloud_redis_cluster_list_backups_async.py", "language": "PYTHON", "origin": "API_DEFINITION", - "regionTag": "redis_v1beta1_generated_CloudRedisCluster_ListBackupCollections_async", + "regionTag": "redis_v1beta1_generated_CloudRedisCluster_ListBackups_async", "segments": [ { "end": 52, @@ -2690,7 +3994,7 @@ "type": "RESPONSE_HANDLING" } ], - "title": "redis_v1beta1_generated_cloud_redis_cluster_list_backup_collections_async.py" + "title": "redis_v1beta1_generated_cloud_redis_cluster_list_backups_async.py" }, { "canonical": true, @@ -2699,19 +4003,19 @@ "fullName": "google.cloud.redis_cluster_v1beta1.CloudRedisClusterClient", "shortName": "CloudRedisClusterClient" }, - "fullName": "google.cloud.redis_cluster_v1beta1.CloudRedisClusterClient.list_backup_collections", + "fullName": "google.cloud.redis_cluster_v1beta1.CloudRedisClusterClient.list_backups", "method": { - "fullName": "google.cloud.redis.cluster.v1beta1.CloudRedisCluster.ListBackupCollections", + "fullName": "google.cloud.redis.cluster.v1beta1.CloudRedisCluster.ListBackups", "service": { "fullName": "google.cloud.redis.cluster.v1beta1.CloudRedisCluster", "shortName": "CloudRedisCluster" }, - "shortName": "ListBackupCollections" + "shortName": "ListBackups" }, "parameters": [ { "name": "request", - "type": "google.cloud.redis_cluster_v1beta1.types.ListBackupCollectionsRequest" + "type": "google.cloud.redis_cluster_v1beta1.types.ListBackupsRequest" }, { "name": "parent", @@ -2730,14 +4034,14 @@ "type": "Sequence[Tuple[str, Union[str, bytes]]]" } ], - "resultType": "google.cloud.redis_cluster_v1beta1.services.cloud_redis_cluster.pagers.ListBackupCollectionsPager", - "shortName": "list_backup_collections" + "resultType": "google.cloud.redis_cluster_v1beta1.services.cloud_redis_cluster.pagers.ListBackupsPager", + "shortName": "list_backups" }, - "description": "Sample for ListBackupCollections", - "file": "redis_v1beta1_generated_cloud_redis_cluster_list_backup_collections_sync.py", + "description": "Sample for ListBackups", + "file": "redis_v1beta1_generated_cloud_redis_cluster_list_backups_sync.py", "language": "PYTHON", "origin": "API_DEFINITION", - "regionTag": "redis_v1beta1_generated_CloudRedisCluster_ListBackupCollections_sync", + "regionTag": "redis_v1beta1_generated_CloudRedisCluster_ListBackups_sync", "segments": [ { "end": 52, @@ -2770,7 +4074,7 @@ "type": "RESPONSE_HANDLING" } ], - "title": "redis_v1beta1_generated_cloud_redis_cluster_list_backup_collections_sync.py" + "title": "redis_v1beta1_generated_cloud_redis_cluster_list_backups_sync.py" }, { "canonical": true, @@ -2780,19 +4084,19 @@ "fullName": "google.cloud.redis_cluster_v1beta1.CloudRedisClusterAsyncClient", "shortName": "CloudRedisClusterAsyncClient" }, - "fullName": "google.cloud.redis_cluster_v1beta1.CloudRedisClusterAsyncClient.list_backups", + "fullName": "google.cloud.redis_cluster_v1beta1.CloudRedisClusterAsyncClient.list_clusters", "method": { - "fullName": "google.cloud.redis.cluster.v1beta1.CloudRedisCluster.ListBackups", + "fullName": "google.cloud.redis.cluster.v1beta1.CloudRedisCluster.ListClusters", "service": { "fullName": "google.cloud.redis.cluster.v1beta1.CloudRedisCluster", "shortName": "CloudRedisCluster" }, - "shortName": "ListBackups" + "shortName": "ListClusters" }, "parameters": [ { "name": "request", - "type": "google.cloud.redis_cluster_v1beta1.types.ListBackupsRequest" + "type": "google.cloud.redis_cluster_v1beta1.types.ListClustersRequest" }, { "name": "parent", @@ -2811,14 +4115,14 @@ "type": "Sequence[Tuple[str, Union[str, bytes]]]" } ], - "resultType": "google.cloud.redis_cluster_v1beta1.services.cloud_redis_cluster.pagers.ListBackupsAsyncPager", - "shortName": "list_backups" + "resultType": "google.cloud.redis_cluster_v1beta1.services.cloud_redis_cluster.pagers.ListClustersAsyncPager", + "shortName": "list_clusters" }, - "description": "Sample for ListBackups", - "file": "redis_v1beta1_generated_cloud_redis_cluster_list_backups_async.py", + "description": "Sample for ListClusters", + "file": "redis_v1beta1_generated_cloud_redis_cluster_list_clusters_async.py", "language": "PYTHON", "origin": "API_DEFINITION", - "regionTag": "redis_v1beta1_generated_CloudRedisCluster_ListBackups_async", + "regionTag": "redis_v1beta1_generated_CloudRedisCluster_ListClusters_async", "segments": [ { "end": 52, @@ -2851,7 +4155,7 @@ "type": "RESPONSE_HANDLING" } ], - "title": "redis_v1beta1_generated_cloud_redis_cluster_list_backups_async.py" + "title": "redis_v1beta1_generated_cloud_redis_cluster_list_clusters_async.py" }, { "canonical": true, @@ -2860,19 +4164,19 @@ "fullName": "google.cloud.redis_cluster_v1beta1.CloudRedisClusterClient", "shortName": "CloudRedisClusterClient" }, - "fullName": "google.cloud.redis_cluster_v1beta1.CloudRedisClusterClient.list_backups", + "fullName": "google.cloud.redis_cluster_v1beta1.CloudRedisClusterClient.list_clusters", "method": { - "fullName": "google.cloud.redis.cluster.v1beta1.CloudRedisCluster.ListBackups", + "fullName": "google.cloud.redis.cluster.v1beta1.CloudRedisCluster.ListClusters", "service": { "fullName": "google.cloud.redis.cluster.v1beta1.CloudRedisCluster", "shortName": "CloudRedisCluster" }, - "shortName": "ListBackups" + "shortName": "ListClusters" }, "parameters": [ { "name": "request", - "type": "google.cloud.redis_cluster_v1beta1.types.ListBackupsRequest" + "type": "google.cloud.redis_cluster_v1beta1.types.ListClustersRequest" }, { "name": "parent", @@ -2891,14 +4195,14 @@ "type": "Sequence[Tuple[str, Union[str, bytes]]]" } ], - "resultType": "google.cloud.redis_cluster_v1beta1.services.cloud_redis_cluster.pagers.ListBackupsPager", - "shortName": "list_backups" + "resultType": "google.cloud.redis_cluster_v1beta1.services.cloud_redis_cluster.pagers.ListClustersPager", + "shortName": "list_clusters" }, - "description": "Sample for ListBackups", - "file": "redis_v1beta1_generated_cloud_redis_cluster_list_backups_sync.py", + "description": "Sample for ListClusters", + "file": "redis_v1beta1_generated_cloud_redis_cluster_list_clusters_sync.py", "language": "PYTHON", "origin": "API_DEFINITION", - "regionTag": "redis_v1beta1_generated_CloudRedisCluster_ListBackups_sync", + "regionTag": "redis_v1beta1_generated_CloudRedisCluster_ListClusters_sync", "segments": [ { "end": 52, @@ -2931,7 +4235,7 @@ "type": "RESPONSE_HANDLING" } ], - "title": "redis_v1beta1_generated_cloud_redis_cluster_list_backups_sync.py" + "title": "redis_v1beta1_generated_cloud_redis_cluster_list_clusters_sync.py" }, { "canonical": true, @@ -2941,19 +4245,19 @@ "fullName": "google.cloud.redis_cluster_v1beta1.CloudRedisClusterAsyncClient", "shortName": "CloudRedisClusterAsyncClient" }, - "fullName": "google.cloud.redis_cluster_v1beta1.CloudRedisClusterAsyncClient.list_clusters", + "fullName": "google.cloud.redis_cluster_v1beta1.CloudRedisClusterAsyncClient.list_token_auth_users", "method": { - "fullName": "google.cloud.redis.cluster.v1beta1.CloudRedisCluster.ListClusters", + "fullName": "google.cloud.redis.cluster.v1beta1.CloudRedisCluster.ListTokenAuthUsers", "service": { "fullName": "google.cloud.redis.cluster.v1beta1.CloudRedisCluster", "shortName": "CloudRedisCluster" }, - "shortName": "ListClusters" + "shortName": "ListTokenAuthUsers" }, "parameters": [ { "name": "request", - "type": "google.cloud.redis_cluster_v1beta1.types.ListClustersRequest" + "type": "google.cloud.redis_cluster_v1beta1.types.ListTokenAuthUsersRequest" }, { "name": "parent", @@ -2972,14 +4276,14 @@ "type": "Sequence[Tuple[str, Union[str, bytes]]]" } ], - "resultType": "google.cloud.redis_cluster_v1beta1.services.cloud_redis_cluster.pagers.ListClustersAsyncPager", - "shortName": "list_clusters" + "resultType": "google.cloud.redis_cluster_v1beta1.services.cloud_redis_cluster.pagers.ListTokenAuthUsersAsyncPager", + "shortName": "list_token_auth_users" }, - "description": "Sample for ListClusters", - "file": "redis_v1beta1_generated_cloud_redis_cluster_list_clusters_async.py", + "description": "Sample for ListTokenAuthUsers", + "file": "redis_v1beta1_generated_cloud_redis_cluster_list_token_auth_users_async.py", "language": "PYTHON", "origin": "API_DEFINITION", - "regionTag": "redis_v1beta1_generated_CloudRedisCluster_ListClusters_async", + "regionTag": "redis_v1beta1_generated_CloudRedisCluster_ListTokenAuthUsers_async", "segments": [ { "end": 52, @@ -3012,7 +4316,7 @@ "type": "RESPONSE_HANDLING" } ], - "title": "redis_v1beta1_generated_cloud_redis_cluster_list_clusters_async.py" + "title": "redis_v1beta1_generated_cloud_redis_cluster_list_token_auth_users_async.py" }, { "canonical": true, @@ -3021,19 +4325,19 @@ "fullName": "google.cloud.redis_cluster_v1beta1.CloudRedisClusterClient", "shortName": "CloudRedisClusterClient" }, - "fullName": "google.cloud.redis_cluster_v1beta1.CloudRedisClusterClient.list_clusters", + "fullName": "google.cloud.redis_cluster_v1beta1.CloudRedisClusterClient.list_token_auth_users", "method": { - "fullName": "google.cloud.redis.cluster.v1beta1.CloudRedisCluster.ListClusters", + "fullName": "google.cloud.redis.cluster.v1beta1.CloudRedisCluster.ListTokenAuthUsers", "service": { "fullName": "google.cloud.redis.cluster.v1beta1.CloudRedisCluster", "shortName": "CloudRedisCluster" }, - "shortName": "ListClusters" + "shortName": "ListTokenAuthUsers" }, "parameters": [ { "name": "request", - "type": "google.cloud.redis_cluster_v1beta1.types.ListClustersRequest" + "type": "google.cloud.redis_cluster_v1beta1.types.ListTokenAuthUsersRequest" }, { "name": "parent", @@ -3052,14 +4356,14 @@ "type": "Sequence[Tuple[str, Union[str, bytes]]]" } ], - "resultType": "google.cloud.redis_cluster_v1beta1.services.cloud_redis_cluster.pagers.ListClustersPager", - "shortName": "list_clusters" + "resultType": "google.cloud.redis_cluster_v1beta1.services.cloud_redis_cluster.pagers.ListTokenAuthUsersPager", + "shortName": "list_token_auth_users" }, - "description": "Sample for ListClusters", - "file": "redis_v1beta1_generated_cloud_redis_cluster_list_clusters_sync.py", + "description": "Sample for ListTokenAuthUsers", + "file": "redis_v1beta1_generated_cloud_redis_cluster_list_token_auth_users_sync.py", "language": "PYTHON", "origin": "API_DEFINITION", - "regionTag": "redis_v1beta1_generated_CloudRedisCluster_ListClusters_sync", + "regionTag": "redis_v1beta1_generated_CloudRedisCluster_ListTokenAuthUsers_sync", "segments": [ { "end": 52, @@ -3092,7 +4396,7 @@ "type": "RESPONSE_HANDLING" } ], - "title": "redis_v1beta1_generated_cloud_redis_cluster_list_clusters_sync.py" + "title": "redis_v1beta1_generated_cloud_redis_cluster_list_token_auth_users_sync.py" }, { "canonical": true, diff --git a/packages/google-cloud-redis-cluster/tests/unit/gapic/redis_cluster_v1beta1/test_cloud_redis_cluster.py b/packages/google-cloud-redis-cluster/tests/unit/gapic/redis_cluster_v1beta1/test_cloud_redis_cluster.py index 65a74e99185e..4c30bf6c2d26 100644 --- a/packages/google-cloud-redis-cluster/tests/unit/gapic/redis_cluster_v1beta1/test_cloud_redis_cluster.py +++ b/packages/google-cloud-redis-cluster/tests/unit/gapic/redis_cluster_v1beta1/test_cloud_redis_cluster.py @@ -9726,13 +9726,90 @@ async def test_backup_cluster_flattened_error_async(): ) -def test_list_clusters_rest_use_cached_wrapped_rpc(): +@pytest.mark.parametrize( + "request_type", + [ + cloud_redis_cluster.ListTokenAuthUsersRequest(), + {}, + ], +) +def test_list_token_auth_users(request_type, transport: str = "grpc"): + client = CloudRedisClusterClient( + 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_token_auth_users), "__call__" + ) as call: + # Designate an appropriate return value for the call. + call.return_value = cloud_redis_cluster.ListTokenAuthUsersResponse( + next_page_token="next_page_token_value", + unreachable=["unreachable_value"], + ) + response = client.list_token_auth_users(request) + + # Establish that the underlying gRPC stub method was called. + assert len(call.mock_calls) == 1 + _, args, _ = call.mock_calls[0] + request = cloud_redis_cluster.ListTokenAuthUsersRequest() + assert args[0] == request + + # Establish that the response is the type that we expect. + assert isinstance(response, pagers.ListTokenAuthUsersPager) + assert response.next_page_token == "next_page_token_value" + assert response.unreachable == ["unreachable_value"] + + +def test_list_token_auth_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 = CloudRedisClusterClient( + 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 = cloud_redis_cluster.ListTokenAuthUsersRequest( + parent="parent_value", + page_token="page_token_value", + filter="filter_value", + order_by="order_by_value", + ) + + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.list_token_auth_users), "__call__" + ) as call: + call.return_value.name = ( + "foo" # operation_request.operation in compute client(s) expect a string. + ) + client.list_token_auth_users(request=request) + call.assert_called() + _, args, _ = call.mock_calls[0] + request_msg = cloud_redis_cluster.ListTokenAuthUsersRequest( + parent="parent_value", + page_token="page_token_value", + filter="filter_value", + order_by="order_by_value", + ) + assert args[0] == request_msg + + +def test_list_token_auth_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: client = CloudRedisClusterClient( credentials=ga_credentials.AnonymousCredentials(), - transport="rest", + transport="grpc", ) # Should wrap all calls on client creation @@ -9740,487 +9817,551 @@ def test_list_clusters_rest_use_cached_wrapped_rpc(): wrapper_fn.reset_mock() # Ensure method has been cached - assert client._transport.list_clusters in client._transport._wrapped_methods + assert ( + client._transport.list_token_auth_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.list_clusters] = mock_rpc - + client._transport._wrapped_methods[client._transport.list_token_auth_users] = ( + mock_rpc + ) request = {} - client.list_clusters(request) + client.list_token_auth_users(request) # Establish that the underlying gRPC stub method was called. assert mock_rpc.call_count == 1 - client.list_clusters(request) + client.list_token_auth_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_list_clusters_rest_required_fields( - request_type=cloud_redis_cluster.ListClustersRequest, +@pytest.mark.asyncio +async def test_list_token_auth_users_async_use_cached_wrapped_rpc( + transport: str = "grpc_asyncio", ): - transport_class = transports.CloudRedisClusterRestTransport - - 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) - ) + # 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 = CloudRedisClusterAsyncClient( + credentials=async_anonymous_credentials(), + transport=transport, + ) - # verify fields with default values are dropped + # Should wrap all calls on client creation + assert wrapper_fn.call_count > 0 + wrapper_fn.reset_mock() - default_values = getattr( - transport_class._BaseListClusters, - "_BaseListClusters__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) + # Ensure method has been cached + assert ( + client._client._transport.list_token_auth_users + in client._client._transport._wrapped_methods + ) - # verify required fields with default values are now present + # 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_token_auth_users + ] = mock_rpc - jsonified_request["parent"] = "parent_value" + request = {} + await client.list_token_auth_users(request) - # Check that path parameters and body parameters are not mixing in. - assert not set(unset_fields) - set( - ( - "pageSize", - "pageToken", - ) - ) + # Establish that the underlying gRPC stub method was called. + assert mock_rpc.call_count == 1 - # verify required fields with non-default values are left alone - assert "parent" in jsonified_request - assert jsonified_request["parent"] == "parent_value" + await client.list_token_auth_users(request) - client = CloudRedisClusterClient( - credentials=ga_credentials.AnonymousCredentials(), - transport="rest", - ) - request = request_type(**request_init) + # Establish that a new wrapper was not created for this call + assert wrapper_fn.call_count == 0 + assert mock_rpc.call_count == 2 - # Designate an appropriate value for the returned response. - return_value = cloud_redis_cluster.ListClustersResponse() - # 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 +@pytest.mark.asyncio +@pytest.mark.parametrize( + "request_type", + [ + cloud_redis_cluster.ListTokenAuthUsersRequest(), + {}, + ], +) +async def test_list_token_auth_users_async( + request_type, transport: str = "grpc_asyncio" +): + client = CloudRedisClusterAsyncClient( + credentials=async_anonymous_credentials(), + transport=transport, + ) - # Convert return value to protobuf type - return_value = cloud_redis_cluster.ListClustersResponse.pb(return_value) - json_return_value = json_format.MessageToJson(return_value) + # 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 - response_value._content = json_return_value.encode("UTF-8") - req.return_value = response_value - req.return_value.headers = {"header-1": "value-1", "header-2": "value-2"} + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.list_token_auth_users), "__call__" + ) as call: + # Designate an appropriate return value for the call. + call.return_value = grpc_helpers_async.FakeUnaryUnaryCall( + cloud_redis_cluster.ListTokenAuthUsersResponse( + next_page_token="next_page_token_value", + unreachable=["unreachable_value"], + ) + ) + response = await client.list_token_auth_users(request) - response = client.list_clusters(request) + # Establish that the underlying gRPC stub method was called. + assert len(call.mock_calls) + _, args, _ = call.mock_calls[0] + request = cloud_redis_cluster.ListTokenAuthUsersRequest() + assert args[0] == request - expected_params = [("$alt", "json;enum-encoding=int")] - actual_params = req.call_args.kwargs["params"] - assert sorted(expected_params) == sorted(actual_params) + # Establish that the response is the type that we expect. + assert isinstance(response, pagers.ListTokenAuthUsersAsyncPager) + assert response.next_page_token == "next_page_token_value" + assert response.unreachable == ["unreachable_value"] -def test_list_clusters_rest_flattened(): +def test_list_token_auth_users_field_headers(): client = CloudRedisClusterClient( 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 = cloud_redis_cluster.ListClustersResponse() - - # get arguments that satisfy an http rule for this method - sample_request = {"parent": "projects/sample1/locations/sample2"} + # 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 = cloud_redis_cluster.ListTokenAuthUsersRequest() - # get truthy value for each flattened field - mock_args = dict( - parent="parent_value", - ) - mock_args.update(sample_request) + request.parent = "parent_value" - # Wrap the value into a proper Response obj - response_value = Response() - response_value.status_code = 200 - # Convert return value to protobuf type - return_value = cloud_redis_cluster.ListClustersResponse.pb(return_value) - json_return_value = json_format.MessageToJson(return_value) - response_value._content = json_return_value.encode("UTF-8") - req.return_value = response_value - req.return_value.headers = {"header-1": "value-1", "header-2": "value-2"} + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.list_token_auth_users), "__call__" + ) as call: + call.return_value = cloud_redis_cluster.ListTokenAuthUsersResponse() + client.list_token_auth_users(request) - client.list_clusters(**mock_args) + # 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 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/v1beta1/{parent=projects/*/locations/*}/clusters" - % client.transport._host, - args[1], - ) + # 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_clusters_rest_flattened_error(transport: str = "rest"): - client = CloudRedisClusterClient( - credentials=ga_credentials.AnonymousCredentials(), - transport=transport, +@pytest.mark.asyncio +async def test_list_token_auth_users_field_headers_async(): + client = CloudRedisClusterAsyncClient( + 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 = cloud_redis_cluster.ListTokenAuthUsersRequest() + + request.parent = "parent_value" + + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.list_token_auth_users), "__call__" + ) as call: + call.return_value = grpc_helpers_async.FakeUnaryUnaryCall( + cloud_redis_cluster.ListTokenAuthUsersResponse() + ) + await client.list_token_auth_users(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_token_auth_users_flattened(): + client = CloudRedisClusterClient( + credentials=ga_credentials.AnonymousCredentials(), + ) + + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.list_token_auth_users), "__call__" + ) as call: + # Designate an appropriate return value for the call. + call.return_value = cloud_redis_cluster.ListTokenAuthUsersResponse() + # Call the method with a truthy value for each flattened field, + # using the keyword arguments to the method. + client.list_token_auth_users( + 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_token_auth_users_flattened_error(): + client = CloudRedisClusterClient( + 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_clusters( - cloud_redis_cluster.ListClustersRequest(), + client.list_token_auth_users( + cloud_redis_cluster.ListTokenAuthUsersRequest(), parent="parent_value", ) -def test_list_clusters_rest_pager(transport: str = "rest"): +@pytest.mark.asyncio +async def test_list_token_auth_users_flattened_async(): + client = CloudRedisClusterAsyncClient( + credentials=async_anonymous_credentials(), + ) + + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.list_token_auth_users), "__call__" + ) as call: + # Designate an appropriate return value for the call. + call.return_value = cloud_redis_cluster.ListTokenAuthUsersResponse() + + call.return_value = grpc_helpers_async.FakeUnaryUnaryCall( + cloud_redis_cluster.ListTokenAuthUsersResponse() + ) + # Call the method with a truthy value for each flattened field, + # using the keyword arguments to the method. + response = await client.list_token_auth_users( + 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_token_auth_users_flattened_error_async(): + client = CloudRedisClusterAsyncClient( + 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_token_auth_users( + cloud_redis_cluster.ListTokenAuthUsersRequest(), + parent="parent_value", + ) + + +def test_list_token_auth_users_pager(transport_name: str = "grpc"): client = CloudRedisClusterClient( credentials=ga_credentials.AnonymousCredentials(), - transport=transport, + transport=transport_name, ) - # 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 = ( - cloud_redis_cluster.ListClustersResponse( - clusters=[ - cloud_redis_cluster.Cluster(), - cloud_redis_cluster.Cluster(), - cloud_redis_cluster.Cluster(), + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.list_token_auth_users), "__call__" + ) as call: + # Set the response to a series of pages. + call.side_effect = ( + cloud_redis_cluster.ListTokenAuthUsersResponse( + token_auth_users=[ + cloud_redis_cluster.TokenAuthUser(), + cloud_redis_cluster.TokenAuthUser(), + cloud_redis_cluster.TokenAuthUser(), ], next_page_token="abc", ), - cloud_redis_cluster.ListClustersResponse( - clusters=[], + cloud_redis_cluster.ListTokenAuthUsersResponse( + token_auth_users=[], next_page_token="def", ), - cloud_redis_cluster.ListClustersResponse( - clusters=[ - cloud_redis_cluster.Cluster(), + cloud_redis_cluster.ListTokenAuthUsersResponse( + token_auth_users=[ + cloud_redis_cluster.TokenAuthUser(), ], next_page_token="ghi", ), - cloud_redis_cluster.ListClustersResponse( - clusters=[ - cloud_redis_cluster.Cluster(), - cloud_redis_cluster.Cluster(), + cloud_redis_cluster.ListTokenAuthUsersResponse( + token_auth_users=[ + cloud_redis_cluster.TokenAuthUser(), + cloud_redis_cluster.TokenAuthUser(), ], ), + RuntimeError, ) - # Two responses for two calls - response = response + response - # Wrap the values into proper Response objs - response = tuple( - cloud_redis_cluster.ListClustersResponse.to_json(x) for x in response + expected_metadata = () + retry = retries.Retry() + timeout = 5 + expected_metadata = tuple(expected_metadata) + ( + gapic_v1.routing_header.to_grpc_metadata((("parent", ""),)), ) - 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_token_auth_users(request={}, retry=retry, timeout=timeout) - pager = client.list_clusters(request=sample_request) + 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, cloud_redis_cluster.Cluster) for i in results) + assert all(isinstance(i, cloud_redis_cluster.TokenAuthUser) for i in results) - pages = list(client.list_clusters(request=sample_request).pages) - for page_, token in zip(pages, ["abc", "def", "ghi", ""]): - assert page_.raw_page.next_page_token == token +def test_list_token_auth_users_pages(transport_name: str = "grpc"): + client = CloudRedisClusterClient( + credentials=ga_credentials.AnonymousCredentials(), + transport=transport_name, + ) -def test_list_acl_policies_rest_use_cached_wrapped_rpc(): - # Clients should use _prep_wrapped_messages to create cached wrapped rpcs, - # instead of constructing them on each call - with mock.patch("google.api_core.gapic_v1.method.wrap_method") as wrapper_fn: - client = CloudRedisClusterClient( - credentials=ga_credentials.AnonymousCredentials(), - transport="rest", + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.list_token_auth_users), "__call__" + ) as call: + # Set the response to a series of pages. + call.side_effect = ( + cloud_redis_cluster.ListTokenAuthUsersResponse( + token_auth_users=[ + cloud_redis_cluster.TokenAuthUser(), + cloud_redis_cluster.TokenAuthUser(), + cloud_redis_cluster.TokenAuthUser(), + ], + next_page_token="abc", + ), + cloud_redis_cluster.ListTokenAuthUsersResponse( + token_auth_users=[], + next_page_token="def", + ), + cloud_redis_cluster.ListTokenAuthUsersResponse( + token_auth_users=[ + cloud_redis_cluster.TokenAuthUser(), + ], + next_page_token="ghi", + ), + cloud_redis_cluster.ListTokenAuthUsersResponse( + token_auth_users=[ + cloud_redis_cluster.TokenAuthUser(), + cloud_redis_cluster.TokenAuthUser(), + ], + ), + RuntimeError, ) + pages = list(client.list_token_auth_users(request={}).pages) + for page_, token in zip(pages, ["abc", "def", "ghi", ""]): + assert page_.raw_page.next_page_token == token - # 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_acl_policies in client._transport._wrapped_methods +@pytest.mark.asyncio +async def test_list_token_auth_users_async_pager(): + client = CloudRedisClusterAsyncClient( + credentials=async_anonymous_credentials(), + ) - # Replace cached wrapped function with mock - mock_rpc = mock.Mock() - mock_rpc.return_value.name = ( - "foo" # operation_request.operation in compute client(s) expect a string. + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.list_token_auth_users), + "__call__", + new_callable=mock.AsyncMock, + ) as call: + # Set the response to a series of pages. + call.side_effect = ( + cloud_redis_cluster.ListTokenAuthUsersResponse( + token_auth_users=[ + cloud_redis_cluster.TokenAuthUser(), + cloud_redis_cluster.TokenAuthUser(), + cloud_redis_cluster.TokenAuthUser(), + ], + next_page_token="abc", + ), + cloud_redis_cluster.ListTokenAuthUsersResponse( + token_auth_users=[], + next_page_token="def", + ), + cloud_redis_cluster.ListTokenAuthUsersResponse( + token_auth_users=[ + cloud_redis_cluster.TokenAuthUser(), + ], + next_page_token="ghi", + ), + cloud_redis_cluster.ListTokenAuthUsersResponse( + token_auth_users=[ + cloud_redis_cluster.TokenAuthUser(), + cloud_redis_cluster.TokenAuthUser(), + ], + ), + RuntimeError, ) - client._transport._wrapped_methods[client._transport.list_acl_policies] = ( - mock_rpc + async_pager = await client.list_token_auth_users( + request={}, ) + assert async_pager.next_page_token == "abc" + assert str(async_pager).startswith(f"{async_pager.__class__.__name__}<") - request = {} - client.list_acl_policies(request) + responses = [] + async for response in async_pager: # pragma: no branch + responses.append(response) - # Establish that the underlying gRPC stub method was called. - assert mock_rpc.call_count == 1 + assert len(responses) == 6 + assert all(isinstance(i, cloud_redis_cluster.TokenAuthUser) for i in responses) - client.list_acl_policies(request) - # Establish that a new wrapper was not created for this call - assert wrapper_fn.call_count == 0 - assert mock_rpc.call_count == 2 +@pytest.mark.asyncio +async def test_list_token_auth_users_async_pages(): + client = CloudRedisClusterAsyncClient( + credentials=async_anonymous_credentials(), + ) + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.list_token_auth_users), + "__call__", + new_callable=mock.AsyncMock, + ) as call: + # Set the response to a series of pages. + call.side_effect = ( + cloud_redis_cluster.ListTokenAuthUsersResponse( + token_auth_users=[ + cloud_redis_cluster.TokenAuthUser(), + cloud_redis_cluster.TokenAuthUser(), + cloud_redis_cluster.TokenAuthUser(), + ], + next_page_token="abc", + ), + cloud_redis_cluster.ListTokenAuthUsersResponse( + token_auth_users=[], + next_page_token="def", + ), + cloud_redis_cluster.ListTokenAuthUsersResponse( + token_auth_users=[ + cloud_redis_cluster.TokenAuthUser(), + ], + next_page_token="ghi", + ), + cloud_redis_cluster.ListTokenAuthUsersResponse( + token_auth_users=[ + cloud_redis_cluster.TokenAuthUser(), + cloud_redis_cluster.TokenAuthUser(), + ], + ), + RuntimeError, + ) + pages = [] + async for page_ in (await client.list_token_auth_users(request={})).pages: + pages.append(page_) + for page_, token in zip(pages, ["abc", "def", "ghi", ""]): + assert page_.raw_page.next_page_token == token -def test_list_acl_policies_rest_required_fields( - request_type=cloud_redis_cluster.ListAclPoliciesRequest, -): - transport_class = transports.CloudRedisClusterRestTransport - 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._BaseListAclPolicies, - "_BaseListAclPolicies__REQUIRED_FIELDS_DEFAULT_VALUES", +@pytest.mark.parametrize( + "request_type", + [ + cloud_redis_cluster.GetTokenAuthUserRequest(), {}, - ) - 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 = CloudRedisClusterClient( - credentials=ga_credentials.AnonymousCredentials(), - transport="rest", - ) - request = request_type(**request_init) - - # Designate an appropriate value for the returned response. - return_value = cloud_redis_cluster.ListAclPoliciesResponse() - # 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 = cloud_redis_cluster.ListAclPoliciesResponse.pb(return_value) - json_return_value = json_format.MessageToJson(return_value) - - response_value._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_acl_policies(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_acl_policies_rest_flattened(): + ], +) +def test_get_token_auth_user(request_type, transport: str = "grpc"): client = CloudRedisClusterClient( credentials=ga_credentials.AnonymousCredentials(), - transport="rest", + transport=transport, ) - # 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 = cloud_redis_cluster.ListAclPoliciesResponse() - - # get arguments that satisfy an http rule for this method - sample_request = {"parent": "projects/sample1/locations/sample2"} + # 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 - # get truthy value for each flattened field - mock_args = dict( - parent="parent_value", + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.get_token_auth_user), "__call__" + ) as call: + # Designate an appropriate return value for the call. + call.return_value = cloud_redis_cluster.TokenAuthUser( + name="name_value", + state=cloud_redis_cluster.TokenAuthUser.State.ACTIVE, ) - 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 = cloud_redis_cluster.ListAclPoliciesResponse.pb(return_value) - json_return_value = json_format.MessageToJson(return_value) - response_value._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_token_auth_user(request) - client.list_acl_policies(**mock_args) + # Establish that the underlying gRPC stub method was called. + assert len(call.mock_calls) == 1 + _, args, _ = call.mock_calls[0] + request = cloud_redis_cluster.GetTokenAuthUserRequest() + assert args[0] == request - # 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/v1beta1/{parent=projects/*/locations/*}/aclPolicies" - % client.transport._host, - args[1], - ) + # Establish that the response is the type that we expect. + assert isinstance(response, cloud_redis_cluster.TokenAuthUser) + assert response.name == "name_value" + assert response.state == cloud_redis_cluster.TokenAuthUser.State.ACTIVE -def test_list_acl_policies_rest_flattened_error(transport: str = "rest"): +def test_get_token_auth_user_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 = CloudRedisClusterClient( credentials=ga_credentials.AnonymousCredentials(), - transport=transport, + transport="grpc", ) - # Attempting to call a method with both a request object and flattened - # fields is an error. - with pytest.raises(ValueError): - client.list_acl_policies( - cloud_redis_cluster.ListAclPoliciesRequest(), - parent="parent_value", - ) - - -def test_list_acl_policies_rest_pager(transport: str = "rest"): - client = CloudRedisClusterClient( - credentials=ga_credentials.AnonymousCredentials(), - transport=transport, + # 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 = cloud_redis_cluster.GetTokenAuthUserRequest( + name="name_value", ) - # 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 = ( - cloud_redis_cluster.ListAclPoliciesResponse( - acl_policies=[ - cloud_redis_cluster.AclPolicy(), - cloud_redis_cluster.AclPolicy(), - cloud_redis_cluster.AclPolicy(), - ], - next_page_token="abc", - ), - cloud_redis_cluster.ListAclPoliciesResponse( - acl_policies=[], - next_page_token="def", - ), - cloud_redis_cluster.ListAclPoliciesResponse( - acl_policies=[ - cloud_redis_cluster.AclPolicy(), - ], - next_page_token="ghi", - ), - cloud_redis_cluster.ListAclPoliciesResponse( - acl_policies=[ - cloud_redis_cluster.AclPolicy(), - cloud_redis_cluster.AclPolicy(), - ], - ), + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.get_token_auth_user), "__call__" + ) as call: + call.return_value.name = ( + "foo" # operation_request.operation in compute client(s) expect a string. ) - # Two responses for two calls - response = response + response - - # Wrap the values into proper Response objs - response = tuple( - cloud_redis_cluster.ListAclPoliciesResponse.to_json(x) for x in response + client.get_token_auth_user(request=request) + call.assert_called() + _, args, _ = call.mock_calls[0] + request_msg = cloud_redis_cluster.GetTokenAuthUserRequest( + name="name_value", ) - 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_acl_policies(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, cloud_redis_cluster.AclPolicy) for i in results) - - pages = list(client.list_acl_policies(request=sample_request).pages) - for page_, token in zip(pages, ["abc", "def", "ghi", ""]): - assert page_.raw_page.next_page_token == token + assert args[0] == request_msg -def test_get_cluster_rest_use_cached_wrapped_rpc(): +def test_get_token_auth_user_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 = CloudRedisClusterClient( credentials=ga_credentials.AnonymousCredentials(), - transport="rest", + transport="grpc", ) # Should wrap all calls on client creation @@ -10228,339 +10369,347 @@ def test_get_cluster_rest_use_cached_wrapped_rpc(): wrapper_fn.reset_mock() # Ensure method has been cached - assert client._transport.get_cluster in client._transport._wrapped_methods + assert ( + client._transport.get_token_auth_user 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_cluster] = mock_rpc - + client._transport._wrapped_methods[client._transport.get_token_auth_user] = ( + mock_rpc + ) request = {} - client.get_cluster(request) + client.get_token_auth_user(request) # Establish that the underlying gRPC stub method was called. assert mock_rpc.call_count == 1 - client.get_cluster(request) + client.get_token_auth_user(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_cluster_rest_required_fields( - request_type=cloud_redis_cluster.GetClusterRequest, +@pytest.mark.asyncio +async def test_get_token_auth_user_async_use_cached_wrapped_rpc( + transport: str = "grpc_asyncio", ): - transport_class = transports.CloudRedisClusterRestTransport + # 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 = CloudRedisClusterAsyncClient( + credentials=async_anonymous_credentials(), + transport=transport, + ) - 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) - ) + # Should wrap all calls on client creation + assert wrapper_fn.call_count > 0 + wrapper_fn.reset_mock() - # verify fields with default values are dropped + # Ensure method has been cached + assert ( + client._client._transport.get_token_auth_user + in client._client._transport._wrapped_methods + ) - default_values = getattr( - transport_class._BaseGetCluster, - "_BaseGetCluster__REQUIRED_FIELDS_DEFAULT_VALUES", - {}, + # 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_token_auth_user + ] = mock_rpc + + request = {} + await client.get_token_auth_user(request) + + # Establish that the underlying gRPC stub method was called. + assert mock_rpc.call_count == 1 + + await client.get_token_auth_user(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", + [ + cloud_redis_cluster.GetTokenAuthUserRequest(), + {}, + ], +) +async def test_get_token_auth_user_async(request_type, transport: str = "grpc_asyncio"): + client = CloudRedisClusterAsyncClient( + credentials=async_anonymous_credentials(), + transport=transport, ) - 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 + # 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 - jsonified_request["name"] = "name_value" + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.get_token_auth_user), "__call__" + ) as call: + # Designate an appropriate return value for the call. + call.return_value = grpc_helpers_async.FakeUnaryUnaryCall( + cloud_redis_cluster.TokenAuthUser( + name="name_value", + state=cloud_redis_cluster.TokenAuthUser.State.ACTIVE, + ) + ) + response = await client.get_token_auth_user(request) - # verify required fields with non-default values are left alone - assert "name" in jsonified_request - assert jsonified_request["name"] == "name_value" + # Establish that the underlying gRPC stub method was called. + assert len(call.mock_calls) + _, args, _ = call.mock_calls[0] + request = cloud_redis_cluster.GetTokenAuthUserRequest() + assert args[0] == request + + # Establish that the response is the type that we expect. + assert isinstance(response, cloud_redis_cluster.TokenAuthUser) + assert response.name == "name_value" + assert response.state == cloud_redis_cluster.TokenAuthUser.State.ACTIVE + +def test_get_token_auth_user_field_headers(): client = CloudRedisClusterClient( credentials=ga_credentials.AnonymousCredentials(), - transport="rest", ) - request = request_type(**request_init) - - # Designate an appropriate value for the returned response. - return_value = cloud_redis_cluster.Cluster() - # 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 + # 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 = cloud_redis_cluster.GetTokenAuthUserRequest() - # Convert return value to protobuf type - return_value = cloud_redis_cluster.Cluster.pb(return_value) - json_return_value = json_format.MessageToJson(return_value) + request.name = "name_value" - response_value._content = json_return_value.encode("UTF-8") - req.return_value = response_value - req.return_value.headers = {"header-1": "value-1", "header-2": "value-2"} + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.get_token_auth_user), "__call__" + ) as call: + call.return_value = cloud_redis_cluster.TokenAuthUser() + client.get_token_auth_user(request) - response = client.get_cluster(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 - expected_params = [("$alt", "json;enum-encoding=int")] - actual_params = req.call_args.kwargs["params"] - assert sorted(expected_params) == sorted(actual_params) + # 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_cluster_rest_flattened(): - client = CloudRedisClusterClient( - credentials=ga_credentials.AnonymousCredentials(), - transport="rest", +@pytest.mark.asyncio +async def test_get_token_auth_user_field_headers_async(): + client = CloudRedisClusterAsyncClient( + credentials=async_anonymous_credentials(), ) - # 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 = cloud_redis_cluster.Cluster() + # 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 = cloud_redis_cluster.GetTokenAuthUserRequest() - # get arguments that satisfy an http rule for this method - sample_request = {"name": "projects/sample1/locations/sample2/clusters/sample3"} + request.name = "name_value" - # get truthy value for each flattened field - mock_args = dict( - name="name_value", + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.get_token_auth_user), "__call__" + ) as call: + call.return_value = grpc_helpers_async.FakeUnaryUnaryCall( + cloud_redis_cluster.TokenAuthUser() ) - mock_args.update(sample_request) + await client.get_token_auth_user(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 = cloud_redis_cluster.Cluster.pb(return_value) - json_return_value = json_format.MessageToJson(return_value) - response_value._content = json_return_value.encode("UTF-8") - req.return_value = response_value - req.return_value.headers = {"header-1": "value-1", "header-2": "value-2"} + # Establish that the underlying gRPC stub method was called. + assert len(call.mock_calls) + _, args, _ = call.mock_calls[0] + assert args[0] == request - client.get_cluster(**mock_args) + # 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_token_auth_user_flattened(): + client = CloudRedisClusterClient( + credentials=ga_credentials.AnonymousCredentials(), + ) + + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.get_token_auth_user), "__call__" + ) as call: + # Designate an appropriate return value for the call. + call.return_value = cloud_redis_cluster.TokenAuthUser() + # Call the method with a truthy value for each flattened field, + # using the keyword arguments to the method. + client.get_token_auth_user( + name="name_value", + ) # 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/v1beta1/{name=projects/*/locations/*/clusters/*}" - % client.transport._host, - args[1], - ) + 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_cluster_rest_flattened_error(transport: str = "rest"): +def test_get_token_auth_user_flattened_error(): client = CloudRedisClusterClient( 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_cluster( - cloud_redis_cluster.GetClusterRequest(), + client.get_token_auth_user( + cloud_redis_cluster.GetTokenAuthUserRequest(), name="name_value", ) -def test_get_acl_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 = CloudRedisClusterClient( - credentials=ga_credentials.AnonymousCredentials(), - transport="rest", - ) - - # Should wrap all calls on client creation - assert wrapper_fn.call_count > 0 - wrapper_fn.reset_mock() +@pytest.mark.asyncio +async def test_get_token_auth_user_flattened_async(): + client = CloudRedisClusterAsyncClient( + credentials=async_anonymous_credentials(), + ) - # Ensure method has been cached - assert client._transport.get_acl_policy in client._transport._wrapped_methods + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.get_token_auth_user), "__call__" + ) as call: + # Designate an appropriate return value for the call. + call.return_value = cloud_redis_cluster.TokenAuthUser() - # 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. + call.return_value = grpc_helpers_async.FakeUnaryUnaryCall( + cloud_redis_cluster.TokenAuthUser() + ) + # Call the method with a truthy value for each flattened field, + # using the keyword arguments to the method. + response = await client.get_token_auth_user( + name="name_value", ) - client._transport._wrapped_methods[client._transport.get_acl_policy] = mock_rpc - - request = {} - client.get_acl_policy(request) - # Establish that the underlying gRPC stub method was called. - assert mock_rpc.call_count == 1 + # 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 - client.get_acl_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.asyncio +async def test_get_token_auth_user_flattened_error_async(): + client = CloudRedisClusterAsyncClient( + 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_token_auth_user( + cloud_redis_cluster.GetTokenAuthUserRequest(), + name="name_value", + ) -def test_get_acl_policy_rest_required_fields( - request_type=cloud_redis_cluster.GetAclPolicyRequest, -): - transport_class = transports.CloudRedisClusterRestTransport - 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) +@pytest.mark.parametrize( + "request_type", + [ + cloud_redis_cluster.ListAuthTokensRequest(), + {}, + ], +) +def test_list_auth_tokens(request_type, transport: str = "grpc"): + client = CloudRedisClusterClient( + credentials=ga_credentials.AnonymousCredentials(), + transport=transport, ) - # verify fields with default values are dropped - - default_values = getattr( - transport_class._BaseGetAclPolicy, - "_BaseGetAclPolicy__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 = CloudRedisClusterClient( - credentials=ga_credentials.AnonymousCredentials(), - transport="rest", - ) - request = request_type(**request_init) - - # Designate an appropriate value for the returned response. - return_value = cloud_redis_cluster.AclPolicy() - # 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 = cloud_redis_cluster.AclPolicy.pb(return_value) - json_return_value = json_format.MessageToJson(return_value) + # 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 - response_value._content = json_return_value.encode("UTF-8") - req.return_value = response_value - req.return_value.headers = {"header-1": "value-1", "header-2": "value-2"} + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.list_auth_tokens), "__call__") as call: + # Designate an appropriate return value for the call. + call.return_value = cloud_redis_cluster.ListAuthTokensResponse( + next_page_token="next_page_token_value", + unreachable=["unreachable_value"], + ) + response = client.list_auth_tokens(request) - response = client.get_acl_policy(request) + # Establish that the underlying gRPC stub method was called. + assert len(call.mock_calls) == 1 + _, args, _ = call.mock_calls[0] + request = cloud_redis_cluster.ListAuthTokensRequest() + assert args[0] == request - expected_params = [("$alt", "json;enum-encoding=int")] - actual_params = req.call_args.kwargs["params"] - assert sorted(expected_params) == sorted(actual_params) + # Establish that the response is the type that we expect. + assert isinstance(response, pagers.ListAuthTokensPager) + assert response.next_page_token == "next_page_token_value" + assert response.unreachable == ["unreachable_value"] -def test_get_acl_policy_rest_flattened(): +def test_list_auth_tokens_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 = CloudRedisClusterClient( credentials=ga_credentials.AnonymousCredentials(), - transport="rest", + transport="grpc", ) - # 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 = cloud_redis_cluster.AclPolicy() - - # get arguments that satisfy an http rule for this method - sample_request = { - "name": "projects/sample1/locations/sample2/aclPolicies/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 = cloud_redis_cluster.AclPolicy.pb(return_value) - json_return_value = json_format.MessageToJson(return_value) - response_value._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_acl_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/v1beta1/{name=projects/*/locations/*/aclPolicies/*}" - % client.transport._host, - args[1], - ) - - -def test_get_acl_policy_rest_flattened_error(transport: str = "rest"): - client = CloudRedisClusterClient( - credentials=ga_credentials.AnonymousCredentials(), - transport=transport, + # 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 = cloud_redis_cluster.ListAuthTokensRequest( + parent="parent_value", + page_token="page_token_value", + filter="filter_value", + order_by="order_by_value", ) - # Attempting to call a method with both a request object and flattened - # fields is an error. - with pytest.raises(ValueError): - client.get_acl_policy( - cloud_redis_cluster.GetAclPolicyRequest(), - name="name_value", + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.list_auth_tokens), "__call__") as call: + call.return_value.name = ( + "foo" # operation_request.operation in compute client(s) expect a string. + ) + client.list_auth_tokens(request=request) + call.assert_called() + _, args, _ = call.mock_calls[0] + request_msg = cloud_redis_cluster.ListAuthTokensRequest( + parent="parent_value", + page_token="page_token_value", + filter="filter_value", + order_by="order_by_value", ) + assert args[0] == request_msg -def test_update_cluster_rest_use_cached_wrapped_rpc(): +def test_list_auth_tokens_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 = CloudRedisClusterClient( credentials=ga_credentials.AnonymousCredentials(), - transport="rest", + transport="grpc", ) # Should wrap all calls on client creation @@ -10568,363 +10717,526 @@ def test_update_cluster_rest_use_cached_wrapped_rpc(): wrapper_fn.reset_mock() # Ensure method has been cached - assert client._transport.update_cluster in client._transport._wrapped_methods + assert client._transport.list_auth_tokens 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_cluster] = mock_rpc - + client._transport._wrapped_methods[client._transport.list_auth_tokens] = ( + mock_rpc + ) request = {} - client.update_cluster(request) + client.list_auth_tokens(request) # Establish that the underlying gRPC stub method was called. assert mock_rpc.call_count == 1 - # Operation methods build a cached wrapper on first rpc call - # subsequent calls should use the cached wrapper - wrapper_fn.reset_mock() - - client.update_cluster(request) + client.list_auth_tokens(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_cluster_rest_required_fields( - request_type=cloud_redis_cluster.UpdateClusterRequest, +@pytest.mark.asyncio +async def test_list_auth_tokens_async_use_cached_wrapped_rpc( + transport: str = "grpc_asyncio", ): - transport_class = transports.CloudRedisClusterRestTransport + # 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 = CloudRedisClusterAsyncClient( + credentials=async_anonymous_credentials(), + transport=transport, + ) - 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) - ) + # Should wrap all calls on client creation + assert wrapper_fn.call_count > 0 + wrapper_fn.reset_mock() - # verify fields with default values are dropped + # Ensure method has been cached + assert ( + client._client._transport.list_auth_tokens + in client._client._transport._wrapped_methods + ) - default_values = getattr( - transport_class._BaseUpdateCluster, - "_BaseUpdateCluster__REQUIRED_FIELDS_DEFAULT_VALUES", + # 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_auth_tokens + ] = mock_rpc + + request = {} + await client.list_auth_tokens(request) + + # Establish that the underlying gRPC stub method was called. + assert mock_rpc.call_count == 1 + + await client.list_auth_tokens(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", + [ + cloud_redis_cluster.ListAuthTokensRequest(), {}, + ], +) +async def test_list_auth_tokens_async(request_type, transport: str = "grpc_asyncio"): + client = CloudRedisClusterAsyncClient( + credentials=async_anonymous_credentials(), + transport=transport, ) - 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 + # 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 - # Check that path parameters and body parameters are not mixing in. - assert not set(unset_fields) - set( - ( - "requestId", - "updateMask", + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.list_auth_tokens), "__call__") as call: + # Designate an appropriate return value for the call. + call.return_value = grpc_helpers_async.FakeUnaryUnaryCall( + cloud_redis_cluster.ListAuthTokensResponse( + next_page_token="next_page_token_value", + unreachable=["unreachable_value"], + ) ) - ) + response = await client.list_auth_tokens(request) + + # Establish that the underlying gRPC stub method was called. + assert len(call.mock_calls) + _, args, _ = call.mock_calls[0] + request = cloud_redis_cluster.ListAuthTokensRequest() + assert args[0] == request + + # Establish that the response is the type that we expect. + assert isinstance(response, pagers.ListAuthTokensAsyncPager) + assert response.next_page_token == "next_page_token_value" + assert response.unreachable == ["unreachable_value"] - # verify required fields with non-default values are left alone +def test_list_auth_tokens_field_headers(): client = CloudRedisClusterClient( credentials=ga_credentials.AnonymousCredentials(), - transport="rest", ) - request = request_type(**request_init) - # Designate an appropriate value for the returned response. - return_value = operations_pb2.Operation(name="operations/spam") - # 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 + # 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 = cloud_redis_cluster.ListAuthTokensRequest() - response_value = Response() - response_value.status_code = 200 - json_return_value = json_format.MessageToJson(return_value) + request.parent = "parent_value" - response_value._content = json_return_value.encode("UTF-8") - req.return_value = response_value - req.return_value.headers = {"header-1": "value-1", "header-2": "value-2"} + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.list_auth_tokens), "__call__") as call: + call.return_value = cloud_redis_cluster.ListAuthTokensResponse() + client.list_auth_tokens(request) - response = client.update_cluster(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 - expected_params = [("$alt", "json;enum-encoding=int")] - actual_params = req.call_args.kwargs["params"] - assert sorted(expected_params) == sorted(actual_params) + # 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_update_cluster_rest_flattened(): - client = CloudRedisClusterClient( - credentials=ga_credentials.AnonymousCredentials(), - transport="rest", +@pytest.mark.asyncio +async def test_list_auth_tokens_field_headers_async(): + client = CloudRedisClusterAsyncClient( + credentials=async_anonymous_credentials(), ) - # 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 = operations_pb2.Operation(name="operations/spam") + # 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 = cloud_redis_cluster.ListAuthTokensRequest() - # get arguments that satisfy an http rule for this method - sample_request = { - "cluster": {"name": "projects/sample1/locations/sample2/clusters/sample3"} - } + request.parent = "parent_value" - # get truthy value for each flattened field - mock_args = dict( - cluster=cloud_redis_cluster.Cluster( - gcs_source=cloud_redis_cluster.Cluster.GcsBackupSource( - uris=["uris_value"] - ) - ), - update_mask=field_mask_pb2.FieldMask(paths=["paths_value"]), + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.list_auth_tokens), "__call__") as call: + call.return_value = grpc_helpers_async.FakeUnaryUnaryCall( + cloud_redis_cluster.ListAuthTokensResponse() ) - mock_args.update(sample_request) + await client.list_auth_tokens(request) - # Wrap the value into a proper Response obj - response_value = Response() - 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"} + # Establish that the underlying gRPC stub method was called. + assert len(call.mock_calls) + _, args, _ = call.mock_calls[0] + assert args[0] == request - client.update_cluster(**mock_args) + # 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_auth_tokens_flattened(): + client = CloudRedisClusterClient( + credentials=ga_credentials.AnonymousCredentials(), + ) + + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.list_auth_tokens), "__call__") as call: + # Designate an appropriate return value for the call. + call.return_value = cloud_redis_cluster.ListAuthTokensResponse() + # Call the method with a truthy value for each flattened field, + # using the keyword arguments to the method. + client.list_auth_tokens( + parent="parent_value", + ) # 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/v1beta1/{cluster.name=projects/*/locations/*/clusters/*}" - % client.transport._host, - args[1], - ) + 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_update_cluster_rest_flattened_error(transport: str = "rest"): +def test_list_auth_tokens_flattened_error(): client = CloudRedisClusterClient( 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_cluster( - cloud_redis_cluster.UpdateClusterRequest(), - cluster=cloud_redis_cluster.Cluster( - gcs_source=cloud_redis_cluster.Cluster.GcsBackupSource( - uris=["uris_value"] - ) - ), - update_mask=field_mask_pb2.FieldMask(paths=["paths_value"]), + client.list_auth_tokens( + cloud_redis_cluster.ListAuthTokensRequest(), + parent="parent_value", ) -def test_update_acl_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 = CloudRedisClusterClient( - credentials=ga_credentials.AnonymousCredentials(), - transport="rest", - ) - - # Should wrap all calls on client creation - assert wrapper_fn.call_count > 0 - wrapper_fn.reset_mock() +@pytest.mark.asyncio +async def test_list_auth_tokens_flattened_async(): + client = CloudRedisClusterAsyncClient( + credentials=async_anonymous_credentials(), + ) - # Ensure method has been cached - assert client._transport.update_acl_policy in client._transport._wrapped_methods + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.list_auth_tokens), "__call__") as call: + # Designate an appropriate return value for the call. + call.return_value = cloud_redis_cluster.ListAuthTokensResponse() - # 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. + call.return_value = grpc_helpers_async.FakeUnaryUnaryCall( + cloud_redis_cluster.ListAuthTokensResponse() ) - client._transport._wrapped_methods[client._transport.update_acl_policy] = ( - mock_rpc + # Call the method with a truthy value for each flattened field, + # using the keyword arguments to the method. + response = await client.list_auth_tokens( + parent="parent_value", ) - request = {} - client.update_acl_policy(request) - - # Establish that the underlying gRPC stub method was called. - assert mock_rpc.call_count == 1 - - # Operation methods build a cached wrapper on first rpc call - # subsequent calls should use the cached wrapper - wrapper_fn.reset_mock() - - client.update_acl_policy(request) - - # Establish that a new wrapper was not created for this call - assert wrapper_fn.call_count == 0 - assert mock_rpc.call_count == 2 - - -def test_update_acl_policy_rest_required_fields( - request_type=cloud_redis_cluster.UpdateAclPolicyRequest, -): - transport_class = transports.CloudRedisClusterRestTransport - - 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) - ) + # 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 - # verify fields with default values are dropped - default_values = getattr( - transport_class._BaseUpdateAclPolicy, - "_BaseUpdateAclPolicy__REQUIRED_FIELDS_DEFAULT_VALUES", - {}, +@pytest.mark.asyncio +async def test_list_auth_tokens_flattened_error_async(): + client = CloudRedisClusterAsyncClient( + credentials=async_anonymous_credentials(), ) - 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( - ( - "requestId", - "updateMask", + # Attempting to call a method with both a request object and flattened + # fields is an error. + with pytest.raises(ValueError): + await client.list_auth_tokens( + cloud_redis_cluster.ListAuthTokensRequest(), + parent="parent_value", ) - ) - # verify required fields with non-default values are left alone +def test_list_auth_tokens_pager(transport_name: str = "grpc"): client = CloudRedisClusterClient( credentials=ga_credentials.AnonymousCredentials(), - transport="rest", + transport=transport_name, ) - request = request_type(**request_init) - # Designate an appropriate value for the returned response. - return_value = operations_pb2.Operation(name="operations/spam") - # 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 + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.list_auth_tokens), "__call__") as call: + # Set the response to a series of pages. + call.side_effect = ( + cloud_redis_cluster.ListAuthTokensResponse( + auth_tokens=[ + cloud_redis_cluster.AuthToken(), + cloud_redis_cluster.AuthToken(), + cloud_redis_cluster.AuthToken(), + ], + next_page_token="abc", + ), + cloud_redis_cluster.ListAuthTokensResponse( + auth_tokens=[], + next_page_token="def", + ), + cloud_redis_cluster.ListAuthTokensResponse( + auth_tokens=[ + cloud_redis_cluster.AuthToken(), + ], + next_page_token="ghi", + ), + cloud_redis_cluster.ListAuthTokensResponse( + auth_tokens=[ + cloud_redis_cluster.AuthToken(), + cloud_redis_cluster.AuthToken(), + ], + ), + RuntimeError, + ) - response_value = Response() - response_value.status_code = 200 - json_return_value = json_format.MessageToJson(return_value) + expected_metadata = () + retry = retries.Retry() + timeout = 5 + expected_metadata = tuple(expected_metadata) + ( + gapic_v1.routing_header.to_grpc_metadata((("parent", ""),)), + ) + pager = client.list_auth_tokens(request={}, retry=retry, timeout=timeout) - response_value._content = json_return_value.encode("UTF-8") - req.return_value = response_value - req.return_value.headers = {"header-1": "value-1", "header-2": "value-2"} + assert pager._metadata == expected_metadata + assert pager._retry == retry + assert pager._timeout == timeout - response = client.update_acl_policy(request) + assert pager.next_page_token == "abc" + assert str(pager).startswith(f"{pager.__class__.__name__}<") - expected_params = [("$alt", "json;enum-encoding=int")] - actual_params = req.call_args.kwargs["params"] - assert sorted(expected_params) == sorted(actual_params) + results = list(pager) + assert len(results) == 6 + assert all(isinstance(i, cloud_redis_cluster.AuthToken) for i in results) -def test_update_acl_policy_rest_flattened(): +def test_list_auth_tokens_pages(transport_name: str = "grpc"): client = CloudRedisClusterClient( credentials=ga_credentials.AnonymousCredentials(), - transport="rest", + transport=transport_name, ) - # 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 = operations_pb2.Operation(name="operations/spam") + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.list_auth_tokens), "__call__") as call: + # Set the response to a series of pages. + call.side_effect = ( + cloud_redis_cluster.ListAuthTokensResponse( + auth_tokens=[ + cloud_redis_cluster.AuthToken(), + cloud_redis_cluster.AuthToken(), + cloud_redis_cluster.AuthToken(), + ], + next_page_token="abc", + ), + cloud_redis_cluster.ListAuthTokensResponse( + auth_tokens=[], + next_page_token="def", + ), + cloud_redis_cluster.ListAuthTokensResponse( + auth_tokens=[ + cloud_redis_cluster.AuthToken(), + ], + next_page_token="ghi", + ), + cloud_redis_cluster.ListAuthTokensResponse( + auth_tokens=[ + cloud_redis_cluster.AuthToken(), + cloud_redis_cluster.AuthToken(), + ], + ), + RuntimeError, + ) + pages = list(client.list_auth_tokens(request={}).pages) + for page_, token in zip(pages, ["abc", "def", "ghi", ""]): + assert page_.raw_page.next_page_token == token - # get arguments that satisfy an http rule for this method - sample_request = { - "acl_policy": { - "name": "projects/sample1/locations/sample2/aclPolicies/sample3" - } - } - # get truthy value for each flattened field - mock_args = dict( - acl_policy=cloud_redis_cluster.AclPolicy(name="name_value"), - update_mask=field_mask_pb2.FieldMask(paths=["paths_value"]), +@pytest.mark.asyncio +async def test_list_auth_tokens_async_pager(): + client = CloudRedisClusterAsyncClient( + credentials=async_anonymous_credentials(), + ) + + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.list_auth_tokens), "__call__", new_callable=mock.AsyncMock + ) as call: + # Set the response to a series of pages. + call.side_effect = ( + cloud_redis_cluster.ListAuthTokensResponse( + auth_tokens=[ + cloud_redis_cluster.AuthToken(), + cloud_redis_cluster.AuthToken(), + cloud_redis_cluster.AuthToken(), + ], + next_page_token="abc", + ), + cloud_redis_cluster.ListAuthTokensResponse( + auth_tokens=[], + next_page_token="def", + ), + cloud_redis_cluster.ListAuthTokensResponse( + auth_tokens=[ + cloud_redis_cluster.AuthToken(), + ], + next_page_token="ghi", + ), + cloud_redis_cluster.ListAuthTokensResponse( + auth_tokens=[ + cloud_redis_cluster.AuthToken(), + cloud_redis_cluster.AuthToken(), + ], + ), + RuntimeError, ) - mock_args.update(sample_request) + async_pager = await client.list_auth_tokens( + request={}, + ) + assert async_pager.next_page_token == "abc" + assert str(async_pager).startswith(f"{async_pager.__class__.__name__}<") - # Wrap the value into a proper Response obj - response_value = Response() - 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"} + responses = [] + async for response in async_pager: # pragma: no branch + responses.append(response) - client.update_acl_policy(**mock_args) + assert len(responses) == 6 + assert all(isinstance(i, cloud_redis_cluster.AuthToken) for i in responses) - # 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/v1beta1/{acl_policy.name=projects/*/locations/*/aclPolicies/*}" - % client.transport._host, - args[1], + +@pytest.mark.asyncio +async def test_list_auth_tokens_async_pages(): + client = CloudRedisClusterAsyncClient( + credentials=async_anonymous_credentials(), + ) + + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.list_auth_tokens), "__call__", new_callable=mock.AsyncMock + ) as call: + # Set the response to a series of pages. + call.side_effect = ( + cloud_redis_cluster.ListAuthTokensResponse( + auth_tokens=[ + cloud_redis_cluster.AuthToken(), + cloud_redis_cluster.AuthToken(), + cloud_redis_cluster.AuthToken(), + ], + next_page_token="abc", + ), + cloud_redis_cluster.ListAuthTokensResponse( + auth_tokens=[], + next_page_token="def", + ), + cloud_redis_cluster.ListAuthTokensResponse( + auth_tokens=[ + cloud_redis_cluster.AuthToken(), + ], + next_page_token="ghi", + ), + cloud_redis_cluster.ListAuthTokensResponse( + auth_tokens=[ + cloud_redis_cluster.AuthToken(), + cloud_redis_cluster.AuthToken(), + ], + ), + RuntimeError, ) + pages = [] + async for page_ in (await client.list_auth_tokens(request={})).pages: + pages.append(page_) + for page_, token in zip(pages, ["abc", "def", "ghi", ""]): + assert page_.raw_page.next_page_token == token -def test_update_acl_policy_rest_flattened_error(transport: str = "rest"): +@pytest.mark.parametrize( + "request_type", + [ + cloud_redis_cluster.GetAuthTokenRequest(), + {}, + ], +) +def test_get_auth_token(request_type, transport: str = "grpc"): client = CloudRedisClusterClient( 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_acl_policy( - cloud_redis_cluster.UpdateAclPolicyRequest(), - acl_policy=cloud_redis_cluster.AclPolicy(name="name_value"), - update_mask=field_mask_pb2.FieldMask(paths=["paths_value"]), + # 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_auth_token), "__call__") as call: + # Designate an appropriate return value for the call. + call.return_value = cloud_redis_cluster.AuthToken( + name="name_value", + token="token_value", + state=cloud_redis_cluster.AuthToken.State.ACTIVE, + ) + response = client.get_auth_token(request) + + # Establish that the underlying gRPC stub method was called. + assert len(call.mock_calls) == 1 + _, args, _ = call.mock_calls[0] + request = cloud_redis_cluster.GetAuthTokenRequest() + assert args[0] == request + + # Establish that the response is the type that we expect. + assert isinstance(response, cloud_redis_cluster.AuthToken) + assert response.name == "name_value" + assert response.token == "token_value" + assert response.state == cloud_redis_cluster.AuthToken.State.ACTIVE + + +def test_get_auth_token_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 = CloudRedisClusterClient( + 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 = cloud_redis_cluster.GetAuthTokenRequest( + name="name_value", + ) + + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.get_auth_token), "__call__") as call: + call.return_value.name = ( + "foo" # operation_request.operation in compute client(s) expect a string. + ) + client.get_auth_token(request=request) + call.assert_called() + _, args, _ = call.mock_calls[0] + request_msg = cloud_redis_cluster.GetAuthTokenRequest( + name="name_value", ) + assert args[0] == request_msg -def test_delete_cluster_rest_use_cached_wrapped_rpc(): +def test_get_auth_token_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 = CloudRedisClusterClient( credentials=ga_credentials.AnonymousCredentials(), - transport="rest", + transport="grpc", ) # Should wrap all calls on client creation @@ -10932,170 +11244,330 @@ def test_delete_cluster_rest_use_cached_wrapped_rpc(): wrapper_fn.reset_mock() # Ensure method has been cached - assert client._transport.delete_cluster in client._transport._wrapped_methods + assert client._transport.get_auth_token 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_cluster] = mock_rpc - + client._transport._wrapped_methods[client._transport.get_auth_token] = mock_rpc request = {} - client.delete_cluster(request) + client.get_auth_token(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_cluster(request) + client.get_auth_token(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_cluster_rest_required_fields( - request_type=cloud_redis_cluster.DeleteClusterRequest, +@pytest.mark.asyncio +async def test_get_auth_token_async_use_cached_wrapped_rpc( + transport: str = "grpc_asyncio", ): - transport_class = transports.CloudRedisClusterRestTransport + # 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 = CloudRedisClusterAsyncClient( + credentials=async_anonymous_credentials(), + transport=transport, + ) - 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) - ) + # Should wrap all calls on client creation + assert wrapper_fn.call_count > 0 + wrapper_fn.reset_mock() - # verify fields with default values are dropped + # Ensure method has been cached + assert ( + client._client._transport.get_auth_token + in client._client._transport._wrapped_methods + ) - default_values = getattr( - transport_class._BaseDeleteCluster, - "_BaseDeleteCluster__REQUIRED_FIELDS_DEFAULT_VALUES", + # 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_auth_token + ] = mock_rpc + + request = {} + await client.get_auth_token(request) + + # Establish that the underlying gRPC stub method was called. + assert mock_rpc.call_count == 1 + + await client.get_auth_token(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", + [ + cloud_redis_cluster.GetAuthTokenRequest(), {}, + ], +) +async def test_get_auth_token_async(request_type, transport: str = "grpc_asyncio"): + client = CloudRedisClusterAsyncClient( + credentials=async_anonymous_credentials(), + transport=transport, ) - 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 + # 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 - jsonified_request["name"] = "name_value" + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.get_auth_token), "__call__") as call: + # Designate an appropriate return value for the call. + call.return_value = grpc_helpers_async.FakeUnaryUnaryCall( + cloud_redis_cluster.AuthToken( + name="name_value", + token="token_value", + state=cloud_redis_cluster.AuthToken.State.ACTIVE, + ) + ) + response = await client.get_auth_token(request) - # Check that path parameters and body parameters are not mixing in. - assert not set(unset_fields) - set(("requestId",)) + # Establish that the underlying gRPC stub method was called. + assert len(call.mock_calls) + _, args, _ = call.mock_calls[0] + request = cloud_redis_cluster.GetAuthTokenRequest() + assert args[0] == request - # verify required fields with non-default values are left alone - assert "name" in jsonified_request - assert jsonified_request["name"] == "name_value" + # Establish that the response is the type that we expect. + assert isinstance(response, cloud_redis_cluster.AuthToken) + assert response.name == "name_value" + assert response.token == "token_value" + assert response.state == cloud_redis_cluster.AuthToken.State.ACTIVE + +def test_get_auth_token_field_headers(): client = CloudRedisClusterClient( credentials=ga_credentials.AnonymousCredentials(), - transport="rest", ) - request = request_type(**request_init) - # Designate an appropriate value for the returned response. - return_value = operations_pb2.Operation(name="operations/spam") - # 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 + # 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 = cloud_redis_cluster.GetAuthTokenRequest() - response_value = Response() - response_value.status_code = 200 - json_return_value = json_format.MessageToJson(return_value) + request.name = "name_value" - response_value._content = json_return_value.encode("UTF-8") - req.return_value = response_value - req.return_value.headers = {"header-1": "value-1", "header-2": "value-2"} + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.get_auth_token), "__call__") as call: + call.return_value = cloud_redis_cluster.AuthToken() + client.get_auth_token(request) - response = client.delete_cluster(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 - expected_params = [("$alt", "json;enum-encoding=int")] - actual_params = req.call_args.kwargs["params"] - assert sorted(expected_params) == sorted(actual_params) + # 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_cluster_rest_flattened(): +@pytest.mark.asyncio +async def test_get_auth_token_field_headers_async(): + client = CloudRedisClusterAsyncClient( + 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 = cloud_redis_cluster.GetAuthTokenRequest() + + request.name = "name_value" + + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.get_auth_token), "__call__") as call: + call.return_value = grpc_helpers_async.FakeUnaryUnaryCall( + cloud_redis_cluster.AuthToken() + ) + await client.get_auth_token(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_auth_token_flattened(): client = CloudRedisClusterClient( 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 = operations_pb2.Operation(name="operations/spam") + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.get_auth_token), "__call__") as call: + # Designate an appropriate return value for the call. + call.return_value = cloud_redis_cluster.AuthToken() + # Call the method with a truthy value for each flattened field, + # using the keyword arguments to the method. + client.get_auth_token( + name="name_value", + ) - # get arguments that satisfy an http rule for this method - sample_request = {"name": "projects/sample1/locations/sample2/clusters/sample3"} + # 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 - # get truthy value for each flattened field - mock_args = dict( + +def test_get_auth_token_flattened_error(): + client = CloudRedisClusterClient( + 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_auth_token( + cloud_redis_cluster.GetAuthTokenRequest(), 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 = json_format.MessageToJson(return_value) - response_value._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_cluster(**mock_args) +@pytest.mark.asyncio +async def test_get_auth_token_flattened_async(): + client = CloudRedisClusterAsyncClient( + credentials=async_anonymous_credentials(), + ) + + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.get_auth_token), "__call__") as call: + # Designate an appropriate return value for the call. + call.return_value = cloud_redis_cluster.AuthToken() + + call.return_value = grpc_helpers_async.FakeUnaryUnaryCall( + cloud_redis_cluster.AuthToken() + ) + # Call the method with a truthy value for each flattened field, + # using the keyword arguments to the method. + response = await client.get_auth_token( + name="name_value", + ) # 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/v1beta1/{name=projects/*/locations/*/clusters/*}" - % client.transport._host, - args[1], - ) + assert len(call.mock_calls) + _, args, _ = call.mock_calls[0] + arg = args[0].name + mock_val = "name_value" + assert arg == mock_val -def test_delete_cluster_rest_flattened_error(transport: str = "rest"): - client = CloudRedisClusterClient( - credentials=ga_credentials.AnonymousCredentials(), - transport=transport, +@pytest.mark.asyncio +async def test_get_auth_token_flattened_error_async(): + client = CloudRedisClusterAsyncClient( + credentials=async_anonymous_credentials(), ) # Attempting to call a method with both a request object and flattened # fields is an error. with pytest.raises(ValueError): - client.delete_cluster( - cloud_redis_cluster.DeleteClusterRequest(), + await client.get_auth_token( + cloud_redis_cluster.GetAuthTokenRequest(), name="name_value", ) -def test_delete_acl_policy_rest_use_cached_wrapped_rpc(): +@pytest.mark.parametrize( + "request_type", + [ + cloud_redis_cluster.AddTokenAuthUserRequest(), + {}, + ], +) +def test_add_token_auth_user(request_type, transport: str = "grpc"): + client = CloudRedisClusterClient( + 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.add_token_auth_user), "__call__" + ) as call: + # Designate an appropriate return value for the call. + call.return_value = operations_pb2.Operation(name="operations/spam") + response = client.add_token_auth_user(request) + + # Establish that the underlying gRPC stub method was called. + assert len(call.mock_calls) == 1 + _, args, _ = call.mock_calls[0] + request = cloud_redis_cluster.AddTokenAuthUserRequest() + assert args[0] == request + + # Establish that the response is the type that we expect. + assert isinstance(response, future.Future) + + +def test_add_token_auth_user_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 = CloudRedisClusterClient( + 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 = cloud_redis_cluster.AddTokenAuthUserRequest( + cluster="cluster_value", + token_auth_user="token_auth_user_value", + ) + + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.add_token_auth_user), "__call__" + ) as call: + call.return_value.name = ( + "foo" # operation_request.operation in compute client(s) expect a string. + ) + client.add_token_auth_user(request=request) + call.assert_called() + _, args, _ = call.mock_calls[0] + request_msg = cloud_redis_cluster.AddTokenAuthUserRequest( + cluster="cluster_value", + token_auth_user="token_auth_user_value", + ) + assert args[0] == request_msg + + +def test_add_token_auth_user_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 = CloudRedisClusterClient( credentials=ga_credentials.AnonymousCredentials(), - transport="rest", + transport="grpc", ) # Should wrap all calls on client creation @@ -11103,355 +11575,355 @@ def test_delete_acl_policy_rest_use_cached_wrapped_rpc(): wrapper_fn.reset_mock() # Ensure method has been cached - assert client._transport.delete_acl_policy in client._transport._wrapped_methods + assert ( + client._transport.add_token_auth_user 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_acl_policy] = ( + client._transport._wrapped_methods[client._transport.add_token_auth_user] = ( mock_rpc ) - request = {} - client.delete_acl_policy(request) + client.add_token_auth_user(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 + # Operation methods call wrapper_fn to build a cached + # client._transport.operations_client instance on first rpc call. + # Subsequent calls should use the cached wrapper wrapper_fn.reset_mock() - client.delete_acl_policy(request) + client.add_token_auth_user(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_acl_policy_rest_required_fields( - request_type=cloud_redis_cluster.DeleteAclPolicyRequest, +@pytest.mark.asyncio +async def test_add_token_auth_user_async_use_cached_wrapped_rpc( + transport: str = "grpc_asyncio", ): - transport_class = transports.CloudRedisClusterRestTransport + # 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 = CloudRedisClusterAsyncClient( + credentials=async_anonymous_credentials(), + transport=transport, + ) - 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) - ) + # Should wrap all calls on client creation + assert wrapper_fn.call_count > 0 + wrapper_fn.reset_mock() - # verify fields with default values are dropped + # Ensure method has been cached + assert ( + client._client._transport.add_token_auth_user + in client._client._transport._wrapped_methods + ) - default_values = getattr( - transport_class._BaseDeleteAclPolicy, - "_BaseDeleteAclPolicy__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) + # Replace cached wrapped function with mock + mock_rpc = mock.AsyncMock() + mock_rpc.return_value = mock.Mock() + client._client._transport._wrapped_methods[ + client._client._transport.add_token_auth_user + ] = mock_rpc - # verify required fields with default values are now present + request = {} + await client.add_token_auth_user(request) - jsonified_request["name"] = "name_value" + # Establish that the underlying gRPC stub method was called. + assert mock_rpc.call_count == 1 - # Check that path parameters and body parameters are not mixing in. - assert not set(unset_fields) - set( - ( - "etag", - "requestId", - ) + # Operation methods call wrapper_fn to build a cached + # client._transport.operations_client instance on first rpc call. + # Subsequent calls should use the cached wrapper + wrapper_fn.reset_mock() + + await client.add_token_auth_user(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", + [ + cloud_redis_cluster.AddTokenAuthUserRequest(), + {}, + ], +) +async def test_add_token_auth_user_async(request_type, transport: str = "grpc_asyncio"): + client = CloudRedisClusterAsyncClient( + credentials=async_anonymous_credentials(), + transport=transport, ) - # verify required fields with non-default values are left alone - assert "name" in jsonified_request - assert jsonified_request["name"] == "name_value" + # 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.add_token_auth_user), "__call__" + ) as call: + # Designate an appropriate return value for the call. + call.return_value = grpc_helpers_async.FakeUnaryUnaryCall( + operations_pb2.Operation(name="operations/spam") + ) + response = await client.add_token_auth_user(request) + + # Establish that the underlying gRPC stub method was called. + assert len(call.mock_calls) + _, args, _ = call.mock_calls[0] + request = cloud_redis_cluster.AddTokenAuthUserRequest() + assert args[0] == request + # Establish that the response is the type that we expect. + assert isinstance(response, future.Future) + + +def test_add_token_auth_user_field_headers(): client = CloudRedisClusterClient( credentials=ga_credentials.AnonymousCredentials(), - transport="rest", ) - request = request_type(**request_init) - # Designate an appropriate value for the returned response. - return_value = operations_pb2.Operation(name="operations/spam") - # 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 + # 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 = cloud_redis_cluster.AddTokenAuthUserRequest() - response_value = Response() - response_value.status_code = 200 - json_return_value = json_format.MessageToJson(return_value) + request.cluster = "cluster_value" - response_value._content = json_return_value.encode("UTF-8") - req.return_value = response_value - req.return_value.headers = {"header-1": "value-1", "header-2": "value-2"} + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.add_token_auth_user), "__call__" + ) as call: + call.return_value = operations_pb2.Operation(name="operations/op") + client.add_token_auth_user(request) - response = client.delete_acl_policy(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 - expected_params = [("$alt", "json;enum-encoding=int")] - actual_params = req.call_args.kwargs["params"] - assert sorted(expected_params) == sorted(actual_params) + # Establish that the field header was sent. + _, _, kw = call.mock_calls[0] + assert ( + "x-goog-request-params", + "cluster=cluster_value", + ) in kw["metadata"] -def test_delete_acl_policy_rest_flattened(): - client = CloudRedisClusterClient( - credentials=ga_credentials.AnonymousCredentials(), - transport="rest", +@pytest.mark.asyncio +async def test_add_token_auth_user_field_headers_async(): + client = CloudRedisClusterAsyncClient( + credentials=async_anonymous_credentials(), ) - # 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 = operations_pb2.Operation(name="operations/spam") + # 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 = cloud_redis_cluster.AddTokenAuthUserRequest() - # get arguments that satisfy an http rule for this method - sample_request = { - "name": "projects/sample1/locations/sample2/aclPolicies/sample3" - } + request.cluster = "cluster_value" - # get truthy value for each flattened field - mock_args = dict( - name="name_value", + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.add_token_auth_user), "__call__" + ) as call: + call.return_value = grpc_helpers_async.FakeUnaryUnaryCall( + operations_pb2.Operation(name="operations/op") ) - mock_args.update(sample_request) + await client.add_token_auth_user(request) - # Wrap the value into a proper Response obj - response_value = Response() - 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"} + # Establish that the underlying gRPC stub method was called. + assert len(call.mock_calls) + _, args, _ = call.mock_calls[0] + assert args[0] == request - client.delete_acl_policy(**mock_args) + # Establish that the field header was sent. + _, _, kw = call.mock_calls[0] + assert ( + "x-goog-request-params", + "cluster=cluster_value", + ) in kw["metadata"] + + +def test_add_token_auth_user_flattened(): + client = CloudRedisClusterClient( + credentials=ga_credentials.AnonymousCredentials(), + ) + + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.add_token_auth_user), "__call__" + ) as call: + # Designate an appropriate return value for the call. + call.return_value = operations_pb2.Operation(name="operations/op") + # Call the method with a truthy value for each flattened field, + # using the keyword arguments to the method. + client.add_token_auth_user( + cluster="cluster_value", + token_auth_user="token_auth_user_value", + ) # 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/v1beta1/{name=projects/*/locations/*/aclPolicies/*}" - % client.transport._host, - args[1], - ) + assert len(call.mock_calls) == 1 + _, args, _ = call.mock_calls[0] + arg = args[0].cluster + mock_val = "cluster_value" + assert arg == mock_val + arg = args[0].token_auth_user + mock_val = "token_auth_user_value" + assert arg == mock_val -def test_delete_acl_policy_rest_flattened_error(transport: str = "rest"): +def test_add_token_auth_user_flattened_error(): client = CloudRedisClusterClient( 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_acl_policy( - cloud_redis_cluster.DeleteAclPolicyRequest(), - name="name_value", + client.add_token_auth_user( + cloud_redis_cluster.AddTokenAuthUserRequest(), + cluster="cluster_value", + token_auth_user="token_auth_user_value", ) -def test_get_acl_policy_revision_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 = CloudRedisClusterClient( - credentials=ga_credentials.AnonymousCredentials(), - transport="rest", - ) +@pytest.mark.asyncio +async def test_add_token_auth_user_flattened_async(): + client = CloudRedisClusterAsyncClient( + credentials=async_anonymous_credentials(), + ) - # Should wrap all calls on client creation - assert wrapper_fn.call_count > 0 - wrapper_fn.reset_mock() + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.add_token_auth_user), "__call__" + ) as call: + # Designate an appropriate return value for the call. + call.return_value = operations_pb2.Operation(name="operations/op") - # Ensure method has been cached - assert ( - client._transport.get_acl_policy_revision - in client._transport._wrapped_methods + call.return_value = grpc_helpers_async.FakeUnaryUnaryCall( + operations_pb2.Operation(name="operations/spam") ) - - # 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. + # Call the method with a truthy value for each flattened field, + # using the keyword arguments to the method. + response = await client.add_token_auth_user( + cluster="cluster_value", + token_auth_user="token_auth_user_value", ) - client._transport._wrapped_methods[ - client._transport.get_acl_policy_revision - ] = mock_rpc - - request = {} - client.get_acl_policy_revision(request) - # Establish that the underlying gRPC stub method was called. - assert mock_rpc.call_count == 1 + # 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].cluster + mock_val = "cluster_value" + assert arg == mock_val + arg = args[0].token_auth_user + mock_val = "token_auth_user_value" + assert arg == mock_val - client.get_acl_policy_revision(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_add_token_auth_user_flattened_error_async(): + client = CloudRedisClusterAsyncClient( + 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.add_token_auth_user( + cloud_redis_cluster.AddTokenAuthUserRequest(), + cluster="cluster_value", + token_auth_user="token_auth_user_value", + ) -def test_get_acl_policy_revision_rest_required_fields( - request_type=cloud_redis_cluster.GetAclPolicyRevisionRequest, -): - transport_class = transports.CloudRedisClusterRestTransport - 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) +@pytest.mark.parametrize( + "request_type", + [ + cloud_redis_cluster.DeleteTokenAuthUserRequest(), + {}, + ], +) +def test_delete_token_auth_user(request_type, transport: str = "grpc"): + client = CloudRedisClusterClient( + credentials=ga_credentials.AnonymousCredentials(), + transport=transport, ) - # verify fields with default values are dropped - - default_values = getattr( - transport_class._BaseGetAclPolicyRevision, - "_BaseGetAclPolicyRevision__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 = CloudRedisClusterClient( - credentials=ga_credentials.AnonymousCredentials(), - transport="rest", - ) - request = request_type(**request_init) - - # Designate an appropriate value for the returned response. - return_value = cloud_redis_cluster.AclPolicyRevision() - # 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 = cloud_redis_cluster.AclPolicyRevision.pb(return_value) - json_return_value = json_format.MessageToJson(return_value) + # 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 - response_value._content = json_return_value.encode("UTF-8") - req.return_value = response_value - req.return_value.headers = {"header-1": "value-1", "header-2": "value-2"} + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.delete_token_auth_user), "__call__" + ) as call: + # Designate an appropriate return value for the call. + call.return_value = operations_pb2.Operation(name="operations/spam") + response = client.delete_token_auth_user(request) - response = client.get_acl_policy_revision(request) + # Establish that the underlying gRPC stub method was called. + assert len(call.mock_calls) == 1 + _, args, _ = call.mock_calls[0] + request = cloud_redis_cluster.DeleteTokenAuthUserRequest() + assert args[0] == request - expected_params = [("$alt", "json;enum-encoding=int")] - actual_params = req.call_args.kwargs["params"] - assert sorted(expected_params) == sorted(actual_params) + # Establish that the response is the type that we expect. + assert isinstance(response, future.Future) -def test_get_acl_policy_revision_rest_flattened(): +def test_delete_token_auth_user_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 = CloudRedisClusterClient( credentials=ga_credentials.AnonymousCredentials(), - transport="rest", + transport="grpc", ) - # 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 = cloud_redis_cluster.AclPolicyRevision() - - # get arguments that satisfy an http rule for this method - sample_request = { - "name": "projects/sample1/locations/sample2/aclPolicies/sample3/revisions/sample4" - } - - # 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 = cloud_redis_cluster.AclPolicyRevision.pb(return_value) - json_return_value = json_format.MessageToJson(return_value) - response_value._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_acl_policy_revision(**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/v1beta1/{name=projects/*/locations/*/aclPolicies/*/revisions/*}" - % client.transport._host, - args[1], - ) - - -def test_get_acl_policy_revision_rest_flattened_error(transport: str = "rest"): - client = CloudRedisClusterClient( - credentials=ga_credentials.AnonymousCredentials(), - transport=transport, + # 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 = cloud_redis_cluster.DeleteTokenAuthUserRequest( + name="name_value", ) - # Attempting to call a method with both a request object and flattened - # fields is an error. - with pytest.raises(ValueError): - client.get_acl_policy_revision( - cloud_redis_cluster.GetAclPolicyRevisionRequest(), + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.delete_token_auth_user), "__call__" + ) as call: + call.return_value.name = ( + "foo" # operation_request.operation in compute client(s) expect a string. + ) + client.delete_token_auth_user(request=request) + call.assert_called() + _, args, _ = call.mock_calls[0] + request_msg = cloud_redis_cluster.DeleteTokenAuthUserRequest( name="name_value", ) + assert args[0] == request_msg -def test_list_acl_policy_revisions_rest_use_cached_wrapped_rpc(): +def test_delete_token_auth_user_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 = CloudRedisClusterClient( credentials=ga_credentials.AnonymousCredentials(), - transport="rest", + transport="grpc", ) # Should wrap all calls on client creation @@ -11460,7 +11932,7 @@ def test_list_acl_policy_revisions_rest_use_cached_wrapped_rpc(): # Ensure method has been cached assert ( - client._transport.list_acl_policy_revisions + client._transport.delete_token_auth_user in client._transport._wrapped_methods ) @@ -11469,450 +11941,334 @@ def test_list_acl_policy_revisions_rest_use_cached_wrapped_rpc(): mock_rpc.return_value.name = ( "foo" # operation_request.operation in compute client(s) expect a string. ) - client._transport._wrapped_methods[ - client._transport.list_acl_policy_revisions - ] = mock_rpc - + client._transport._wrapped_methods[client._transport.delete_token_auth_user] = ( + mock_rpc + ) request = {} - client.list_acl_policy_revisions(request) + client.delete_token_auth_user(request) # Establish that the underlying gRPC stub method was called. assert mock_rpc.call_count == 1 - client.list_acl_policy_revisions(request) + # Operation methods call wrapper_fn to build a cached + # client._transport.operations_client instance on first rpc call. + # Subsequent calls should use the cached wrapper + wrapper_fn.reset_mock() + + client.delete_token_auth_user(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_acl_policy_revisions_rest_required_fields( - request_type=cloud_redis_cluster.ListAclPolicyRevisionsRequest, +@pytest.mark.asyncio +async def test_delete_token_auth_user_async_use_cached_wrapped_rpc( + transport: str = "grpc_asyncio", ): - transport_class = transports.CloudRedisClusterRestTransport + # 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 = CloudRedisClusterAsyncClient( + credentials=async_anonymous_credentials(), + transport=transport, + ) - 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) - ) + # Should wrap all calls on client creation + assert wrapper_fn.call_count > 0 + wrapper_fn.reset_mock() - # verify fields with default values are dropped + # Ensure method has been cached + assert ( + client._client._transport.delete_token_auth_user + in client._client._transport._wrapped_methods + ) - default_values = getattr( - transport_class._BaseListAclPolicyRevisions, - "_BaseListAclPolicyRevisions__REQUIRED_FIELDS_DEFAULT_VALUES", + # 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_token_auth_user + ] = mock_rpc + + request = {} + await client.delete_token_auth_user(request) + + # Establish that the underlying gRPC stub method was called. + assert mock_rpc.call_count == 1 + + # Operation methods call wrapper_fn to build a cached + # client._transport.operations_client instance on first rpc call. + # Subsequent calls should use the cached wrapper + wrapper_fn.reset_mock() + + await client.delete_token_auth_user(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", + [ + cloud_redis_cluster.DeleteTokenAuthUserRequest(), {}, + ], +) +async def test_delete_token_auth_user_async( + request_type, transport: str = "grpc_asyncio" +): + client = CloudRedisClusterAsyncClient( + credentials=async_anonymous_credentials(), + transport=transport, ) - 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" + # 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 - # Check that path parameters and body parameters are not mixing in. - assert not set(unset_fields) - set( - ( - "pageSize", - "pageToken", + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.delete_token_auth_user), "__call__" + ) as call: + # Designate an appropriate return value for the call. + call.return_value = grpc_helpers_async.FakeUnaryUnaryCall( + operations_pb2.Operation(name="operations/spam") ) - ) + response = await client.delete_token_auth_user(request) - # verify required fields with non-default values are left alone - assert "parent" in jsonified_request - assert jsonified_request["parent"] == "parent_value" + # Establish that the underlying gRPC stub method was called. + assert len(call.mock_calls) + _, args, _ = call.mock_calls[0] + request = cloud_redis_cluster.DeleteTokenAuthUserRequest() + assert args[0] == request + + # Establish that the response is the type that we expect. + assert isinstance(response, future.Future) + +def test_delete_token_auth_user_field_headers(): client = CloudRedisClusterClient( credentials=ga_credentials.AnonymousCredentials(), - transport="rest", ) - request = request_type(**request_init) - # Designate an appropriate value for the returned response. - return_value = cloud_redis_cluster.ListAclPolicyRevisionsResponse() - # 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 + # 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 = cloud_redis_cluster.DeleteTokenAuthUserRequest() - # Convert return value to protobuf type - return_value = cloud_redis_cluster.ListAclPolicyRevisionsResponse.pb( - return_value - ) - json_return_value = json_format.MessageToJson(return_value) + request.name = "name_value" - response_value._content = json_return_value.encode("UTF-8") - req.return_value = response_value - req.return_value.headers = {"header-1": "value-1", "header-2": "value-2"} + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.delete_token_auth_user), "__call__" + ) as call: + call.return_value = operations_pb2.Operation(name="operations/op") + client.delete_token_auth_user(request) - response = client.list_acl_policy_revisions(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 - expected_params = [("$alt", "json;enum-encoding=int")] - actual_params = req.call_args.kwargs["params"] - assert sorted(expected_params) == sorted(actual_params) + # 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_list_acl_policy_revisions_rest_flattened(): - client = CloudRedisClusterClient( - credentials=ga_credentials.AnonymousCredentials(), - transport="rest", +@pytest.mark.asyncio +async def test_delete_token_auth_user_field_headers_async(): + client = CloudRedisClusterAsyncClient( + credentials=async_anonymous_credentials(), ) - # 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 = cloud_redis_cluster.ListAclPolicyRevisionsResponse() + # 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 = cloud_redis_cluster.DeleteTokenAuthUserRequest() - # get arguments that satisfy an http rule for this method - sample_request = { - "parent": "projects/sample1/locations/sample2/aclPolicies/sample3" - } + request.name = "name_value" - # get truthy value for each flattened field - mock_args = dict( - parent="parent_value", + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.delete_token_auth_user), "__call__" + ) as call: + call.return_value = grpc_helpers_async.FakeUnaryUnaryCall( + operations_pb2.Operation(name="operations/op") ) - mock_args.update(sample_request) + await client.delete_token_auth_user(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 = cloud_redis_cluster.ListAclPolicyRevisionsResponse.pb( - return_value - ) - json_return_value = json_format.MessageToJson(return_value) - response_value._content = json_return_value.encode("UTF-8") - req.return_value = response_value - req.return_value.headers = {"header-1": "value-1", "header-2": "value-2"} + # Establish that the underlying gRPC stub method was called. + assert len(call.mock_calls) + _, args, _ = call.mock_calls[0] + assert args[0] == request - client.list_acl_policy_revisions(**mock_args) + # 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_token_auth_user_flattened(): + client = CloudRedisClusterClient( + credentials=ga_credentials.AnonymousCredentials(), + ) + + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.delete_token_auth_user), "__call__" + ) as call: + # Designate an appropriate return value for the call. + call.return_value = operations_pb2.Operation(name="operations/op") + # Call the method with a truthy value for each flattened field, + # using the keyword arguments to the method. + client.delete_token_auth_user( + name="name_value", + ) # 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/v1beta1/{parent=projects/*/locations/*/aclPolicies/*}/revisions" - % client.transport._host, - args[1], - ) + 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_list_acl_policy_revisions_rest_flattened_error(transport: str = "rest"): +def test_delete_token_auth_user_flattened_error(): client = CloudRedisClusterClient( 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_acl_policy_revisions( - cloud_redis_cluster.ListAclPolicyRevisionsRequest(), - parent="parent_value", + client.delete_token_auth_user( + cloud_redis_cluster.DeleteTokenAuthUserRequest(), + name="name_value", ) -def test_list_acl_policy_revisions_rest_pager(transport: str = "rest"): - client = CloudRedisClusterClient( - credentials=ga_credentials.AnonymousCredentials(), - transport=transport, +@pytest.mark.asyncio +async def test_delete_token_auth_user_flattened_async(): + client = CloudRedisClusterAsyncClient( + credentials=async_anonymous_credentials(), ) - # 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 = ( - cloud_redis_cluster.ListAclPolicyRevisionsResponse( - acl_policy_revisions=[ - cloud_redis_cluster.AclPolicyRevision(), - cloud_redis_cluster.AclPolicyRevision(), - cloud_redis_cluster.AclPolicyRevision(), - ], - next_page_token="abc", - ), - cloud_redis_cluster.ListAclPolicyRevisionsResponse( - acl_policy_revisions=[], - next_page_token="def", - ), - cloud_redis_cluster.ListAclPolicyRevisionsResponse( - acl_policy_revisions=[ - cloud_redis_cluster.AclPolicyRevision(), - ], - next_page_token="ghi", - ), - cloud_redis_cluster.ListAclPolicyRevisionsResponse( - acl_policy_revisions=[ - cloud_redis_cluster.AclPolicyRevision(), - cloud_redis_cluster.AclPolicyRevision(), - ], - ), - ) - # Two responses for two calls - response = response + response + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.delete_token_auth_user), "__call__" + ) as call: + # Designate an appropriate return value for the call. + call.return_value = operations_pb2.Operation(name="operations/op") - # Wrap the values into proper Response objs - response = tuple( - cloud_redis_cluster.ListAclPolicyRevisionsResponse.to_json(x) - for x in response + call.return_value = grpc_helpers_async.FakeUnaryUnaryCall( + operations_pb2.Operation(name="operations/spam") + ) + # Call the method with a truthy value for each flattened field, + # using the keyword arguments to the method. + response = await client.delete_token_auth_user( + name="name_value", ) - 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/aclPolicies/sample3" - } + # 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 - pager = client.list_acl_policy_revisions(request=sample_request) - assert pager.next_page_token == "abc" - assert str(pager).startswith(f"{pager.__class__.__name__}<") +@pytest.mark.asyncio +async def test_delete_token_auth_user_flattened_error_async(): + client = CloudRedisClusterAsyncClient( + credentials=async_anonymous_credentials(), + ) - results = list(pager) - assert len(results) == 6 - assert all( - isinstance(i, cloud_redis_cluster.AclPolicyRevision) for i in results + # Attempting to call a method with both a request object and flattened + # fields is an error. + with pytest.raises(ValueError): + await client.delete_token_auth_user( + cloud_redis_cluster.DeleteTokenAuthUserRequest(), + name="name_value", ) - pages = list(client.list_acl_policy_revisions(request=sample_request).pages) - for page_, token in zip(pages, ["abc", "def", "ghi", ""]): - assert page_.raw_page.next_page_token == token +@pytest.mark.parametrize( + "request_type", + [ + cloud_redis_cluster.AddAuthTokenRequest(), + {}, + ], +) +def test_add_auth_token(request_type, transport: str = "grpc"): + client = CloudRedisClusterClient( + credentials=ga_credentials.AnonymousCredentials(), + transport=transport, + ) -def test_create_cluster_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 = CloudRedisClusterClient( - credentials=ga_credentials.AnonymousCredentials(), - transport="rest", - ) + # 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 - # Should wrap all calls on client creation - assert wrapper_fn.call_count > 0 - wrapper_fn.reset_mock() + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.add_auth_token), "__call__") as call: + # Designate an appropriate return value for the call. + call.return_value = operations_pb2.Operation(name="operations/spam") + response = client.add_auth_token(request) - # Ensure method has been cached - assert client._transport.create_cluster in client._transport._wrapped_methods + # Establish that the underlying gRPC stub method was called. + assert len(call.mock_calls) == 1 + _, args, _ = call.mock_calls[0] + request = cloud_redis_cluster.AddAuthTokenRequest() + assert args[0] == request - # 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_cluster] = mock_rpc + # Establish that the response is the type that we expect. + assert isinstance(response, future.Future) - request = {} - client.create_cluster(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.create_cluster(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_cluster_rest_required_fields( - request_type=cloud_redis_cluster.CreateClusterRequest, -): - transport_class = transports.CloudRedisClusterRestTransport - - request_init = {} - request_init["parent"] = "" - request_init["cluster_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 - assert "clusterId" not in jsonified_request - - default_values = getattr( - transport_class._BaseCreateCluster, - "_BaseCreateCluster__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 - assert "clusterId" in jsonified_request - assert jsonified_request["clusterId"] == request_init["cluster_id"] - - jsonified_request["parent"] = "parent_value" - jsonified_request["clusterId"] = "cluster_id_value" - - # Check that path parameters and body parameters are not mixing in. - assert not set(unset_fields) - set( - ( - "clusterId", - "requestId", - ) - ) - - # verify required fields with non-default values are left alone - assert "parent" in jsonified_request - assert jsonified_request["parent"] == "parent_value" - assert "clusterId" in jsonified_request - assert jsonified_request["clusterId"] == "cluster_id_value" +def test_add_auth_token_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 = CloudRedisClusterClient( credentials=ga_credentials.AnonymousCredentials(), - transport="rest", + transport="grpc", ) - request = request_type(**request_init) - - # Designate an appropriate value for the returned response. - return_value = operations_pb2.Operation(name="operations/spam") - # 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 - json_return_value = json_format.MessageToJson(return_value) - - response_value._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_cluster(request) - - expected_params = [ - ( - "clusterId", - "", - ), - ("$alt", "json;enum-encoding=int"), - ] - actual_params = req.call_args.kwargs["params"] - assert sorted(expected_params) == sorted(actual_params) - -def test_create_cluster_rest_flattened(): - client = CloudRedisClusterClient( - credentials=ga_credentials.AnonymousCredentials(), - transport="rest", + # 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 = cloud_redis_cluster.AddAuthTokenRequest( + token_auth_user="token_auth_user_value", ) - # 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 = operations_pb2.Operation(name="operations/spam") - - # 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", - cluster=cloud_redis_cluster.Cluster( - gcs_source=cloud_redis_cluster.Cluster.GcsBackupSource( - uris=["uris_value"] - ) - ), - cluster_id="cluster_id_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 = json_format.MessageToJson(return_value) - response_value._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_cluster(**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/v1beta1/{parent=projects/*/locations/*}/clusters" - % client.transport._host, - args[1], + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.add_auth_token), "__call__") as call: + call.return_value.name = ( + "foo" # operation_request.operation in compute client(s) expect a string. ) - - -def test_create_cluster_rest_flattened_error(transport: str = "rest"): - client = CloudRedisClusterClient( - 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_cluster( - cloud_redis_cluster.CreateClusterRequest(), - parent="parent_value", - cluster=cloud_redis_cluster.Cluster( - gcs_source=cloud_redis_cluster.Cluster.GcsBackupSource( - uris=["uris_value"] - ) - ), - cluster_id="cluster_id_value", + client.add_auth_token(request=request) + call.assert_called() + _, args, _ = call.mock_calls[0] + request_msg = cloud_redis_cluster.AddAuthTokenRequest( + token_auth_user="token_auth_user_value", ) + assert args[0] == request_msg -def test_create_acl_policy_rest_use_cached_wrapped_rpc(): +def test_add_auth_token_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 = CloudRedisClusterClient( credentials=ga_credentials.AnonymousCredentials(), - transport="rest", + transport="grpc", ) # Should wrap all calls on client creation @@ -11920,374 +12276,341 @@ def test_create_acl_policy_rest_use_cached_wrapped_rpc(): wrapper_fn.reset_mock() # Ensure method has been cached - assert client._transport.create_acl_policy in client._transport._wrapped_methods + assert client._transport.add_auth_token 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_acl_policy] = ( - mock_rpc - ) - + client._transport._wrapped_methods[client._transport.add_auth_token] = mock_rpc request = {} - client.create_acl_policy(request) + client.add_auth_token(request) # Establish that the underlying gRPC stub method was called. assert mock_rpc.call_count == 1 - client.create_acl_policy(request) + # Operation methods call wrapper_fn to build a cached + # client._transport.operations_client instance on first rpc call. + # Subsequent calls should use the cached wrapper + wrapper_fn.reset_mock() + + client.add_auth_token(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_acl_policy_rest_required_fields( - request_type=cloud_redis_cluster.CreateAclPolicyRequest, +@pytest.mark.asyncio +async def test_add_auth_token_async_use_cached_wrapped_rpc( + transport: str = "grpc_asyncio", ): - transport_class = transports.CloudRedisClusterRestTransport + # 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 = CloudRedisClusterAsyncClient( + credentials=async_anonymous_credentials(), + transport=transport, + ) - request_init = {} - request_init["parent"] = "" - request_init["acl_policy_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) - ) + # Should wrap all calls on client creation + assert wrapper_fn.call_count > 0 + wrapper_fn.reset_mock() - # verify fields with default values are dropped - assert "aclPolicyId" not in jsonified_request + # Ensure method has been cached + assert ( + client._client._transport.add_auth_token + in client._client._transport._wrapped_methods + ) - default_values = getattr( - transport_class._BaseCreateAclPolicy, - "_BaseCreateAclPolicy__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) + # Replace cached wrapped function with mock + mock_rpc = mock.AsyncMock() + mock_rpc.return_value = mock.Mock() + client._client._transport._wrapped_methods[ + client._client._transport.add_auth_token + ] = mock_rpc - # verify required fields with default values are now present - assert "aclPolicyId" in jsonified_request - assert jsonified_request["aclPolicyId"] == request_init["acl_policy_id"] + request = {} + await client.add_auth_token(request) - jsonified_request["parent"] = "parent_value" - jsonified_request["aclPolicyId"] = "acl_policy_id_value" + # Establish that the underlying gRPC stub method was called. + assert mock_rpc.call_count == 1 - # Check that path parameters and body parameters are not mixing in. - assert not set(unset_fields) - set( - ( - "aclPolicyId", - "requestId", - ) - ) + # Operation methods call wrapper_fn to build a cached + # client._transport.operations_client instance on first rpc call. + # Subsequent calls should use the cached wrapper + wrapper_fn.reset_mock() - # verify required fields with non-default values are left alone - assert "parent" in jsonified_request - assert jsonified_request["parent"] == "parent_value" - assert "aclPolicyId" in jsonified_request - assert jsonified_request["aclPolicyId"] == "acl_policy_id_value" + await client.add_auth_token(request) - client = CloudRedisClusterClient( - credentials=ga_credentials.AnonymousCredentials(), - transport="rest", - ) - request = request_type(**request_init) + # Establish that a new wrapper was not created for this call + assert wrapper_fn.call_count == 0 + assert mock_rpc.call_count == 2 - # Designate an appropriate value for the returned response. - return_value = cloud_redis_cluster.AclPolicy() - # 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 +@pytest.mark.asyncio +@pytest.mark.parametrize( + "request_type", + [ + cloud_redis_cluster.AddAuthTokenRequest(), + {}, + ], +) +async def test_add_auth_token_async(request_type, transport: str = "grpc_asyncio"): + client = CloudRedisClusterAsyncClient( + credentials=async_anonymous_credentials(), + transport=transport, + ) - # Convert return value to protobuf type - return_value = cloud_redis_cluster.AclPolicy.pb(return_value) - json_return_value = json_format.MessageToJson(return_value) + # 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 - response_value._content = json_return_value.encode("UTF-8") - req.return_value = response_value - req.return_value.headers = {"header-1": "value-1", "header-2": "value-2"} + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.add_auth_token), "__call__") as call: + # Designate an appropriate return value for the call. + call.return_value = grpc_helpers_async.FakeUnaryUnaryCall( + operations_pb2.Operation(name="operations/spam") + ) + response = await client.add_auth_token(request) - response = client.create_acl_policy(request) + # Establish that the underlying gRPC stub method was called. + assert len(call.mock_calls) + _, args, _ = call.mock_calls[0] + request = cloud_redis_cluster.AddAuthTokenRequest() + assert args[0] == request - expected_params = [ - ( - "aclPolicyId", - "", - ), - ("$alt", "json;enum-encoding=int"), - ] - actual_params = req.call_args.kwargs["params"] - assert sorted(expected_params) == sorted(actual_params) + # Establish that the response is the type that we expect. + assert isinstance(response, future.Future) -def test_create_acl_policy_rest_flattened(): +def test_add_auth_token_field_headers(): client = CloudRedisClusterClient( 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 = cloud_redis_cluster.AclPolicy() + # 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 = cloud_redis_cluster.AddAuthTokenRequest() - # get arguments that satisfy an http rule for this method - sample_request = {"parent": "projects/sample1/locations/sample2"} + request.token_auth_user = "token_auth_user_value" - # get truthy value for each flattened field - mock_args = dict( - parent="parent_value", - acl_policy=cloud_redis_cluster.AclPolicy(name="name_value"), - acl_policy_id="acl_policy_id_value", + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.add_auth_token), "__call__") as call: + call.return_value = operations_pb2.Operation(name="operations/op") + client.add_auth_token(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", + "token_auth_user=token_auth_user_value", + ) in kw["metadata"] + + +@pytest.mark.asyncio +async def test_add_auth_token_field_headers_async(): + client = CloudRedisClusterAsyncClient( + 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 = cloud_redis_cluster.AddAuthTokenRequest() + + request.token_auth_user = "token_auth_user_value" + + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.add_auth_token), "__call__") as call: + call.return_value = grpc_helpers_async.FakeUnaryUnaryCall( + operations_pb2.Operation(name="operations/op") ) - mock_args.update(sample_request) + await client.add_auth_token(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 = cloud_redis_cluster.AclPolicy.pb(return_value) - json_return_value = json_format.MessageToJson(return_value) - response_value._content = json_return_value.encode("UTF-8") - req.return_value = response_value - req.return_value.headers = {"header-1": "value-1", "header-2": "value-2"} + # Establish that the underlying gRPC stub method was called. + assert len(call.mock_calls) + _, args, _ = call.mock_calls[0] + assert args[0] == request - client.create_acl_policy(**mock_args) + # Establish that the field header was sent. + _, _, kw = call.mock_calls[0] + assert ( + "x-goog-request-params", + "token_auth_user=token_auth_user_value", + ) in kw["metadata"] + + +def test_add_auth_token_flattened(): + client = CloudRedisClusterClient( + credentials=ga_credentials.AnonymousCredentials(), + ) + + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.add_auth_token), "__call__") as call: + # Designate an appropriate return value for the call. + call.return_value = operations_pb2.Operation(name="operations/op") + # Call the method with a truthy value for each flattened field, + # using the keyword arguments to the method. + client.add_auth_token( + token_auth_user="token_auth_user_value", + auth_token=cloud_redis_cluster.AuthToken(name="name_value"), + ) # 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/v1beta1/{parent=projects/*/locations/*}/aclPolicies" - % client.transport._host, - args[1], - ) + assert len(call.mock_calls) == 1 + _, args, _ = call.mock_calls[0] + arg = args[0].token_auth_user + mock_val = "token_auth_user_value" + assert arg == mock_val + arg = args[0].auth_token + mock_val = cloud_redis_cluster.AuthToken(name="name_value") + assert arg == mock_val -def test_create_acl_policy_rest_flattened_error(transport: str = "rest"): +def test_add_auth_token_flattened_error(): client = CloudRedisClusterClient( 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_acl_policy( - cloud_redis_cluster.CreateAclPolicyRequest(), - parent="parent_value", - acl_policy=cloud_redis_cluster.AclPolicy(name="name_value"), - acl_policy_id="acl_policy_id_value", + client.add_auth_token( + cloud_redis_cluster.AddAuthTokenRequest(), + token_auth_user="token_auth_user_value", + auth_token=cloud_redis_cluster.AuthToken(name="name_value"), ) -def test_get_cluster_certificate_authority_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 = CloudRedisClusterClient( - credentials=ga_credentials.AnonymousCredentials(), - transport="rest", - ) +@pytest.mark.asyncio +async def test_add_auth_token_flattened_async(): + client = CloudRedisClusterAsyncClient( + credentials=async_anonymous_credentials(), + ) - # Should wrap all calls on client creation - assert wrapper_fn.call_count > 0 - wrapper_fn.reset_mock() + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.add_auth_token), "__call__") as call: + # Designate an appropriate return value for the call. + call.return_value = operations_pb2.Operation(name="operations/op") - # Ensure method has been cached - assert ( - client._transport.get_cluster_certificate_authority - in client._transport._wrapped_methods + call.return_value = grpc_helpers_async.FakeUnaryUnaryCall( + operations_pb2.Operation(name="operations/spam") ) - - # 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. + # Call the method with a truthy value for each flattened field, + # using the keyword arguments to the method. + response = await client.add_auth_token( + token_auth_user="token_auth_user_value", + auth_token=cloud_redis_cluster.AuthToken(name="name_value"), ) - client._transport._wrapped_methods[ - client._transport.get_cluster_certificate_authority - ] = mock_rpc - - request = {} - client.get_cluster_certificate_authority(request) - - # Establish that the underlying gRPC stub method was called. - assert mock_rpc.call_count == 1 - - client.get_cluster_certificate_authority(request) - - # Establish that a new wrapper was not created for this call - assert wrapper_fn.call_count == 0 - assert mock_rpc.call_count == 2 + # 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].token_auth_user + mock_val = "token_auth_user_value" + assert arg == mock_val + arg = args[0].auth_token + mock_val = cloud_redis_cluster.AuthToken(name="name_value") + assert arg == mock_val -def test_get_cluster_certificate_authority_rest_required_fields( - request_type=cloud_redis_cluster.GetClusterCertificateAuthorityRequest, -): - transport_class = transports.CloudRedisClusterRestTransport - 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) +@pytest.mark.asyncio +async def test_add_auth_token_flattened_error_async(): + client = CloudRedisClusterAsyncClient( + credentials=async_anonymous_credentials(), ) - # verify fields with default values are dropped + # Attempting to call a method with both a request object and flattened + # fields is an error. + with pytest.raises(ValueError): + await client.add_auth_token( + cloud_redis_cluster.AddAuthTokenRequest(), + token_auth_user="token_auth_user_value", + auth_token=cloud_redis_cluster.AuthToken(name="name_value"), + ) - default_values = getattr( - transport_class._BaseGetClusterCertificateAuthority, - "_BaseGetClusterCertificateAuthority__REQUIRED_FIELDS_DEFAULT_VALUES", + +@pytest.mark.parametrize( + "request_type", + [ + cloud_redis_cluster.DeleteAuthTokenRequest(), {}, + ], +) +def test_delete_auth_token(request_type, transport: str = "grpc"): + client = CloudRedisClusterClient( + credentials=ga_credentials.AnonymousCredentials(), + transport=transport, ) - 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" + # 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 - # verify required fields with non-default values are left alone - assert "name" in jsonified_request - assert jsonified_request["name"] == "name_value" - - client = CloudRedisClusterClient( - credentials=ga_credentials.AnonymousCredentials(), - transport="rest", - ) - request = request_type(**request_init) - - # Designate an appropriate value for the returned response. - return_value = cloud_redis_cluster.CertificateAuthority() - # 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 = cloud_redis_cluster.CertificateAuthority.pb(return_value) - json_return_value = json_format.MessageToJson(return_value) - - response_value._content = json_return_value.encode("UTF-8") - req.return_value = response_value - req.return_value.headers = {"header-1": "value-1", "header-2": "value-2"} + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.delete_auth_token), "__call__" + ) as call: + # Designate an appropriate return value for the call. + call.return_value = operations_pb2.Operation(name="operations/spam") + response = client.delete_auth_token(request) - response = client.get_cluster_certificate_authority(request) + # Establish that the underlying gRPC stub method was called. + assert len(call.mock_calls) == 1 + _, args, _ = call.mock_calls[0] + request = cloud_redis_cluster.DeleteAuthTokenRequest() + assert args[0] == request - expected_params = [("$alt", "json;enum-encoding=int")] - actual_params = req.call_args.kwargs["params"] - assert sorted(expected_params) == sorted(actual_params) + # Establish that the response is the type that we expect. + assert isinstance(response, future.Future) -def test_get_cluster_certificate_authority_rest_flattened(): +def test_delete_auth_token_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 = CloudRedisClusterClient( credentials=ga_credentials.AnonymousCredentials(), - transport="rest", + transport="grpc", ) - # 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 = cloud_redis_cluster.CertificateAuthority() - - # get arguments that satisfy an http rule for this method - sample_request = { - "name": "projects/sample1/locations/sample2/clusters/sample3/certificateAuthority" - } - - # 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 = cloud_redis_cluster.CertificateAuthority.pb(return_value) - json_return_value = json_format.MessageToJson(return_value) - response_value._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_cluster_certificate_authority(**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/v1beta1/{name=projects/*/locations/*/clusters/*/certificateAuthority}" - % client.transport._host, - args[1], - ) - - -def test_get_cluster_certificate_authority_rest_flattened_error( - transport: str = "rest", -): - client = CloudRedisClusterClient( - credentials=ga_credentials.AnonymousCredentials(), - transport=transport, + # 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 = cloud_redis_cluster.DeleteAuthTokenRequest( + name="name_value", ) - # Attempting to call a method with both a request object and flattened - # fields is an error. - with pytest.raises(ValueError): - client.get_cluster_certificate_authority( - cloud_redis_cluster.GetClusterCertificateAuthorityRequest(), + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.delete_auth_token), "__call__" + ) as call: + call.return_value.name = ( + "foo" # operation_request.operation in compute client(s) expect a string. + ) + client.delete_auth_token(request=request) + call.assert_called() + _, args, _ = call.mock_calls[0] + request_msg = cloud_redis_cluster.DeleteAuthTokenRequest( name="name_value", ) + assert args[0] == request_msg -def test_get_shared_regional_certificate_authority_rest_use_cached_wrapped_rpc(): +def test_delete_auth_token_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 = CloudRedisClusterClient( credentials=ga_credentials.AnonymousCredentials(), - transport="rest", + transport="grpc", ) # Should wrap all calls on client creation @@ -12295,175 +12618,271 @@ def test_get_shared_regional_certificate_authority_rest_use_cached_wrapped_rpc() wrapper_fn.reset_mock() # Ensure method has been cached - assert ( - client._transport.get_shared_regional_certificate_authority - in client._transport._wrapped_methods - ) + assert client._transport.delete_auth_token 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_shared_regional_certificate_authority - ] = mock_rpc - + client._transport._wrapped_methods[client._transport.delete_auth_token] = ( + mock_rpc + ) request = {} - client.get_shared_regional_certificate_authority(request) + client.delete_auth_token(request) # Establish that the underlying gRPC stub method was called. assert mock_rpc.call_count == 1 - client.get_shared_regional_certificate_authority(request) + # Operation methods call wrapper_fn to build a cached + # client._transport.operations_client instance on first rpc call. + # Subsequent calls should use the cached wrapper + wrapper_fn.reset_mock() + + client.delete_auth_token(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_shared_regional_certificate_authority_rest_required_fields( - request_type=cloud_redis_cluster.GetSharedRegionalCertificateAuthorityRequest, +@pytest.mark.asyncio +async def test_delete_auth_token_async_use_cached_wrapped_rpc( + transport: str = "grpc_asyncio", ): - transport_class = transports.CloudRedisClusterRestTransport + # 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 = CloudRedisClusterAsyncClient( + credentials=async_anonymous_credentials(), + transport=transport, + ) - 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) - ) + # Should wrap all calls on client creation + assert wrapper_fn.call_count > 0 + wrapper_fn.reset_mock() - # verify fields with default values are dropped + # Ensure method has been cached + assert ( + client._client._transport.delete_auth_token + in client._client._transport._wrapped_methods + ) - default_values = getattr( - transport_class._BaseGetSharedRegionalCertificateAuthority, - "_BaseGetSharedRegionalCertificateAuthority__REQUIRED_FIELDS_DEFAULT_VALUES", + # 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_auth_token + ] = mock_rpc + + request = {} + await client.delete_auth_token(request) + + # Establish that the underlying gRPC stub method was called. + assert mock_rpc.call_count == 1 + + # Operation methods call wrapper_fn to build a cached + # client._transport.operations_client instance on first rpc call. + # Subsequent calls should use the cached wrapper + wrapper_fn.reset_mock() + + await client.delete_auth_token(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", + [ + cloud_redis_cluster.DeleteAuthTokenRequest(), {}, + ], +) +async def test_delete_auth_token_async(request_type, transport: str = "grpc_asyncio"): + client = CloudRedisClusterAsyncClient( + credentials=async_anonymous_credentials(), + transport=transport, ) - 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 + # 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 - jsonified_request["name"] = "name_value" + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.delete_auth_token), "__call__" + ) as call: + # Designate an appropriate return value for the call. + call.return_value = grpc_helpers_async.FakeUnaryUnaryCall( + operations_pb2.Operation(name="operations/spam") + ) + response = await client.delete_auth_token(request) - # verify required fields with non-default values are left alone - assert "name" in jsonified_request - assert jsonified_request["name"] == "name_value" + # Establish that the underlying gRPC stub method was called. + assert len(call.mock_calls) + _, args, _ = call.mock_calls[0] + request = cloud_redis_cluster.DeleteAuthTokenRequest() + assert args[0] == request + + # Establish that the response is the type that we expect. + assert isinstance(response, future.Future) + +def test_delete_auth_token_field_headers(): client = CloudRedisClusterClient( credentials=ga_credentials.AnonymousCredentials(), - transport="rest", ) - request = request_type(**request_init) - # Designate an appropriate value for the returned response. - return_value = cloud_redis_cluster.SharedRegionalCertificateAuthority() - # 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 + # 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 = cloud_redis_cluster.DeleteAuthTokenRequest() - response_value = Response() - response_value.status_code = 200 + request.name = "name_value" - # Convert return value to protobuf type - return_value = cloud_redis_cluster.SharedRegionalCertificateAuthority.pb( - return_value - ) - json_return_value = json_format.MessageToJson(return_value) + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.delete_auth_token), "__call__" + ) as call: + call.return_value = operations_pb2.Operation(name="operations/op") + client.delete_auth_token(request) - response_value._content = json_return_value.encode("UTF-8") - req.return_value = response_value - req.return_value.headers = {"header-1": "value-1", "header-2": "value-2"} + # Establish that the underlying gRPC stub method was called. + assert len(call.mock_calls) == 1 + _, args, _ = call.mock_calls[0] + assert args[0] == request - response = client.get_shared_regional_certificate_authority(request) + # Establish that the field header was sent. + _, _, kw = call.mock_calls[0] + assert ( + "x-goog-request-params", + "name=name_value", + ) in kw["metadata"] - expected_params = [("$alt", "json;enum-encoding=int")] - actual_params = req.call_args.kwargs["params"] - assert sorted(expected_params) == sorted(actual_params) +@pytest.mark.asyncio +async def test_delete_auth_token_field_headers_async(): + client = CloudRedisClusterAsyncClient( + 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 = cloud_redis_cluster.DeleteAuthTokenRequest() -def test_get_shared_regional_certificate_authority_rest_flattened(): + request.name = "name_value" + + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.delete_auth_token), "__call__" + ) as call: + call.return_value = grpc_helpers_async.FakeUnaryUnaryCall( + operations_pb2.Operation(name="operations/op") + ) + await client.delete_auth_token(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_auth_token_flattened(): client = CloudRedisClusterClient( 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 = cloud_redis_cluster.SharedRegionalCertificateAuthority() + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.delete_auth_token), "__call__" + ) as call: + # Designate an appropriate return value for the call. + call.return_value = operations_pb2.Operation(name="operations/op") + # Call the method with a truthy value for each flattened field, + # using the keyword arguments to the method. + client.delete_auth_token( + name="name_value", + ) - # get arguments that satisfy an http rule for this method - sample_request = { - "name": "projects/sample1/locations/sample2/sharedRegionalCertificateAuthority" - } + # 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 - # get truthy value for each flattened field - mock_args = dict( + +def test_delete_auth_token_flattened_error(): + client = CloudRedisClusterClient( + 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_auth_token( + cloud_redis_cluster.DeleteAuthTokenRequest(), 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 = cloud_redis_cluster.SharedRegionalCertificateAuthority.pb( - return_value - ) - json_return_value = json_format.MessageToJson(return_value) - response_value._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_shared_regional_certificate_authority(**mock_args) +@pytest.mark.asyncio +async def test_delete_auth_token_flattened_async(): + client = CloudRedisClusterAsyncClient( + credentials=async_anonymous_credentials(), + ) + + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.delete_auth_token), "__call__" + ) as call: + # Designate an appropriate return value for the call. + call.return_value = operations_pb2.Operation(name="operations/op") + + call.return_value = grpc_helpers_async.FakeUnaryUnaryCall( + operations_pb2.Operation(name="operations/spam") + ) + # Call the method with a truthy value for each flattened field, + # using the keyword arguments to the method. + response = await client.delete_auth_token( + name="name_value", + ) # 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/v1beta1/{name=projects/*/locations/*/sharedRegionalCertificateAuthority}" - % client.transport._host, - args[1], - ) + assert len(call.mock_calls) + _, args, _ = call.mock_calls[0] + arg = args[0].name + mock_val = "name_value" + assert arg == mock_val -def test_get_shared_regional_certificate_authority_rest_flattened_error( - transport: str = "rest", -): - client = CloudRedisClusterClient( - credentials=ga_credentials.AnonymousCredentials(), - transport=transport, +@pytest.mark.asyncio +async def test_delete_auth_token_flattened_error_async(): + client = CloudRedisClusterAsyncClient( + credentials=async_anonymous_credentials(), ) # Attempting to call a method with both a request object and flattened # fields is an error. with pytest.raises(ValueError): - client.get_shared_regional_certificate_authority( - cloud_redis_cluster.GetSharedRegionalCertificateAuthorityRequest(), + await client.delete_auth_token( + cloud_redis_cluster.DeleteAuthTokenRequest(), name="name_value", ) -def test_reschedule_cluster_maintenance_rest_use_cached_wrapped_rpc(): +def test_list_clusters_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: @@ -12477,44 +12896,35 @@ def test_reschedule_cluster_maintenance_rest_use_cached_wrapped_rpc(): wrapper_fn.reset_mock() # Ensure method has been cached - assert ( - client._transport.reschedule_cluster_maintenance - in client._transport._wrapped_methods - ) + assert client._transport.list_clusters 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.reschedule_cluster_maintenance - ] = mock_rpc + client._transport._wrapped_methods[client._transport.list_clusters] = mock_rpc request = {} - client.reschedule_cluster_maintenance(request) + client.list_clusters(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.reschedule_cluster_maintenance(request) + client.list_clusters(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_reschedule_cluster_maintenance_rest_required_fields( - request_type=cloud_redis_cluster.RescheduleClusterMaintenanceRequest, +def test_list_clusters_rest_required_fields( + request_type=cloud_redis_cluster.ListClustersRequest, ): transport_class = transports.CloudRedisClusterRestTransport request_init = {} - request_init["name"] = "" + request_init["parent"] = "" request = request_type(**request_init) pb_request = request_type.pb(request) jsonified_request = json.loads( @@ -12524,8 +12934,8 @@ def test_reschedule_cluster_maintenance_rest_required_fields( # verify fields with default values are dropped default_values = getattr( - transport_class._BaseRescheduleClusterMaintenance, - "_BaseRescheduleClusterMaintenance__REQUIRED_FIELDS_DEFAULT_VALUES", + transport_class._BaseListClusters, + "_BaseListClusters__REQUIRED_FIELDS_DEFAULT_VALUES", {}, ) unset_fields = { @@ -12535,11 +12945,19 @@ def test_reschedule_cluster_maintenance_rest_required_fields( # verify required fields with default values are now present - jsonified_request["name"] = "name_value" + 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 "name" in jsonified_request - assert jsonified_request["name"] == "name_value" + assert "parent" in jsonified_request + assert jsonified_request["parent"] == "parent_value" client = CloudRedisClusterClient( credentials=ga_credentials.AnonymousCredentials(), @@ -12548,7 +12966,7 @@ def test_reschedule_cluster_maintenance_rest_required_fields( request = request_type(**request_init) # Designate an appropriate value for the returned response. - return_value = operations_pb2.Operation(name="operations/spam") + return_value = cloud_redis_cluster.ListClustersResponse() # 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 @@ -12560,28 +12978,30 @@ def test_reschedule_cluster_maintenance_rest_required_fields( pb_request = request_type.pb(request) transcode_result = { "uri": "v1/sample_method", - "method": "post", + "method": "get", "query_params": pb_request, } - transcode_result["body"] = pb_request transcode.return_value = transcode_result response_value = Response() response_value.status_code = 200 + + # Convert return value to protobuf type + return_value = cloud_redis_cluster.ListClustersResponse.pb(return_value) json_return_value = json_format.MessageToJson(return_value) response_value._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.reschedule_cluster_maintenance(request) + response = client.list_clusters(request) expected_params = [("$alt", "json;enum-encoding=int")] actual_params = req.call_args.kwargs["params"] assert sorted(expected_params) == sorted(actual_params) -def test_reschedule_cluster_maintenance_rest_flattened(): +def test_list_clusters_rest_flattened(): client = CloudRedisClusterClient( credentials=ga_credentials.AnonymousCredentials(), transport="rest", @@ -12590,41 +13010,41 @@ def test_reschedule_cluster_maintenance_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 = operations_pb2.Operation(name="operations/spam") + return_value = cloud_redis_cluster.ListClustersResponse() # get arguments that satisfy an http rule for this method - sample_request = {"name": "projects/sample1/locations/sample2/clusters/sample3"} + sample_request = {"parent": "projects/sample1/locations/sample2"} # get truthy value for each flattened field mock_args = dict( - name="name_value", - reschedule_type=cloud_redis_cluster.RescheduleClusterMaintenanceRequest.RescheduleType.IMMEDIATE, - schedule_time=timestamp_pb2.Timestamp(seconds=751), + 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 = cloud_redis_cluster.ListClustersResponse.pb(return_value) json_return_value = json_format.MessageToJson(return_value) response_value._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.reschedule_cluster_maintenance(**mock_args) + client.list_clusters(**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/v1beta1/{name=projects/*/locations/*/clusters/*}:rescheduleClusterMaintenance" + "%s/v1beta1/{parent=projects/*/locations/*}/clusters" % client.transport._host, args[1], ) -def test_reschedule_cluster_maintenance_rest_flattened_error(transport: str = "rest"): +def test_list_clusters_rest_flattened_error(transport: str = "rest"): client = CloudRedisClusterClient( credentials=ga_credentials.AnonymousCredentials(), transport=transport, @@ -12633,57 +13053,118 @@ def test_reschedule_cluster_maintenance_rest_flattened_error(transport: str = "r # Attempting to call a method with both a request object and flattened # fields is an error. with pytest.raises(ValueError): - client.reschedule_cluster_maintenance( - cloud_redis_cluster.RescheduleClusterMaintenanceRequest(), - name="name_value", - reschedule_type=cloud_redis_cluster.RescheduleClusterMaintenanceRequest.RescheduleType.IMMEDIATE, - schedule_time=timestamp_pb2.Timestamp(seconds=751), - ) - - -def test_list_backup_collections_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 = CloudRedisClusterClient( - 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_backup_collections - in client._transport._wrapped_methods + client.list_clusters( + cloud_redis_cluster.ListClustersRequest(), + parent="parent_value", ) - # 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_backup_collections - ] = mock_rpc - request = {} - client.list_backup_collections(request) +def test_list_clusters_rest_pager(transport: str = "rest"): + client = CloudRedisClusterClient( + 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 = ( + cloud_redis_cluster.ListClustersResponse( + clusters=[ + cloud_redis_cluster.Cluster(), + cloud_redis_cluster.Cluster(), + cloud_redis_cluster.Cluster(), + ], + next_page_token="abc", + ), + cloud_redis_cluster.ListClustersResponse( + clusters=[], + next_page_token="def", + ), + cloud_redis_cluster.ListClustersResponse( + clusters=[ + cloud_redis_cluster.Cluster(), + ], + next_page_token="ghi", + ), + cloud_redis_cluster.ListClustersResponse( + clusters=[ + cloud_redis_cluster.Cluster(), + cloud_redis_cluster.Cluster(), + ], + ), + ) + # Two responses for two calls + response = response + response + + # Wrap the values into proper Response objs + response = tuple( + cloud_redis_cluster.ListClustersResponse.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_clusters(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, cloud_redis_cluster.Cluster) for i in results) + + pages = list(client.list_clusters(request=sample_request).pages) + for page_, token in zip(pages, ["abc", "def", "ghi", ""]): + assert page_.raw_page.next_page_token == token + + +def test_list_acl_policies_rest_use_cached_wrapped_rpc(): + # Clients should use _prep_wrapped_messages to create cached wrapped rpcs, + # instead of constructing them on each call + with mock.patch("google.api_core.gapic_v1.method.wrap_method") as wrapper_fn: + client = CloudRedisClusterClient( + 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_acl_policies 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_acl_policies] = ( + mock_rpc + ) + + request = {} + client.list_acl_policies(request) # Establish that the underlying gRPC stub method was called. assert mock_rpc.call_count == 1 - client.list_backup_collections(request) + client.list_acl_policies(request) # Establish that a new wrapper was not created for this call assert wrapper_fn.call_count == 0 assert mock_rpc.call_count == 2 -def test_list_backup_collections_rest_required_fields( - request_type=cloud_redis_cluster.ListBackupCollectionsRequest, +def test_list_acl_policies_rest_required_fields( + request_type=cloud_redis_cluster.ListAclPoliciesRequest, ): transport_class = transports.CloudRedisClusterRestTransport @@ -12698,8 +13179,8 @@ def test_list_backup_collections_rest_required_fields( # verify fields with default values are dropped default_values = getattr( - transport_class._BaseListBackupCollections, - "_BaseListBackupCollections__REQUIRED_FIELDS_DEFAULT_VALUES", + transport_class._BaseListAclPolicies, + "_BaseListAclPolicies__REQUIRED_FIELDS_DEFAULT_VALUES", {}, ) unset_fields = { @@ -12730,7 +13211,7 @@ def test_list_backup_collections_rest_required_fields( request = request_type(**request_init) # Designate an appropriate value for the returned response. - return_value = cloud_redis_cluster.ListBackupCollectionsResponse() + return_value = cloud_redis_cluster.ListAclPoliciesResponse() # 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 @@ -12751,23 +13232,21 @@ def test_list_backup_collections_rest_required_fields( response_value.status_code = 200 # Convert return value to protobuf type - return_value = cloud_redis_cluster.ListBackupCollectionsResponse.pb( - return_value - ) + return_value = cloud_redis_cluster.ListAclPoliciesResponse.pb(return_value) json_return_value = json_format.MessageToJson(return_value) response_value._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_backup_collections(request) + response = client.list_acl_policies(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_backup_collections_rest_flattened(): +def test_list_acl_policies_rest_flattened(): client = CloudRedisClusterClient( credentials=ga_credentials.AnonymousCredentials(), transport="rest", @@ -12776,7 +13255,7 @@ def test_list_backup_collections_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 = cloud_redis_cluster.ListBackupCollectionsResponse() + return_value = cloud_redis_cluster.ListAclPoliciesResponse() # get arguments that satisfy an http rule for this method sample_request = {"parent": "projects/sample1/locations/sample2"} @@ -12791,28 +13270,26 @@ def test_list_backup_collections_rest_flattened(): response_value = Response() response_value.status_code = 200 # Convert return value to protobuf type - return_value = cloud_redis_cluster.ListBackupCollectionsResponse.pb( - return_value - ) + return_value = cloud_redis_cluster.ListAclPoliciesResponse.pb(return_value) json_return_value = json_format.MessageToJson(return_value) response_value._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_backup_collections(**mock_args) + client.list_acl_policies(**mock_args) # Establish that the underlying call was made with the expected # request object values. assert len(req.mock_calls) == 1 _, args, _ = req.mock_calls[0] assert path_template.validate( - "%s/v1beta1/{parent=projects/*/locations/*}/backupCollections" + "%s/v1beta1/{parent=projects/*/locations/*}/aclPolicies" % client.transport._host, args[1], ) -def test_list_backup_collections_rest_flattened_error(transport: str = "rest"): +def test_list_acl_policies_rest_flattened_error(transport: str = "rest"): client = CloudRedisClusterClient( credentials=ga_credentials.AnonymousCredentials(), transport=transport, @@ -12821,13 +13298,13 @@ def test_list_backup_collections_rest_flattened_error(transport: str = "rest"): # Attempting to call a method with both a request object and flattened # fields is an error. with pytest.raises(ValueError): - client.list_backup_collections( - cloud_redis_cluster.ListBackupCollectionsRequest(), + client.list_acl_policies( + cloud_redis_cluster.ListAclPoliciesRequest(), parent="parent_value", ) -def test_list_backup_collections_rest_pager(transport: str = "rest"): +def test_list_acl_policies_rest_pager(transport: str = "rest"): client = CloudRedisClusterClient( credentials=ga_credentials.AnonymousCredentials(), transport=transport, @@ -12839,28 +13316,28 @@ def test_list_backup_collections_rest_pager(transport: str = "rest"): # with mock.patch.object(path_template, 'transcode') as transcode: # Set the response as a series of pages response = ( - cloud_redis_cluster.ListBackupCollectionsResponse( - backup_collections=[ - cloud_redis_cluster.BackupCollection(), - cloud_redis_cluster.BackupCollection(), - cloud_redis_cluster.BackupCollection(), + cloud_redis_cluster.ListAclPoliciesResponse( + acl_policies=[ + cloud_redis_cluster.AclPolicy(), + cloud_redis_cluster.AclPolicy(), + cloud_redis_cluster.AclPolicy(), ], next_page_token="abc", ), - cloud_redis_cluster.ListBackupCollectionsResponse( - backup_collections=[], + cloud_redis_cluster.ListAclPoliciesResponse( + acl_policies=[], next_page_token="def", ), - cloud_redis_cluster.ListBackupCollectionsResponse( - backup_collections=[ - cloud_redis_cluster.BackupCollection(), + cloud_redis_cluster.ListAclPoliciesResponse( + acl_policies=[ + cloud_redis_cluster.AclPolicy(), ], next_page_token="ghi", ), - cloud_redis_cluster.ListBackupCollectionsResponse( - backup_collections=[ - cloud_redis_cluster.BackupCollection(), - cloud_redis_cluster.BackupCollection(), + cloud_redis_cluster.ListAclPoliciesResponse( + acl_policies=[ + cloud_redis_cluster.AclPolicy(), + cloud_redis_cluster.AclPolicy(), ], ), ) @@ -12869,8 +13346,7 @@ def test_list_backup_collections_rest_pager(transport: str = "rest"): # Wrap the values into proper Response objs response = tuple( - cloud_redis_cluster.ListBackupCollectionsResponse.to_json(x) - for x in response + cloud_redis_cluster.ListAclPoliciesResponse.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): @@ -12880,21 +13356,21 @@ def test_list_backup_collections_rest_pager(transport: str = "rest"): sample_request = {"parent": "projects/sample1/locations/sample2"} - pager = client.list_backup_collections(request=sample_request) + pager = client.list_acl_policies(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, cloud_redis_cluster.BackupCollection) for i in results) + assert all(isinstance(i, cloud_redis_cluster.AclPolicy) for i in results) - pages = list(client.list_backup_collections(request=sample_request).pages) + pages = list(client.list_acl_policies(request=sample_request).pages) for page_, token in zip(pages, ["abc", "def", "ghi", ""]): assert page_.raw_page.next_page_token == token -def test_get_backup_collection_rest_use_cached_wrapped_rpc(): +def test_get_cluster_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: @@ -12908,35 +13384,30 @@ def test_get_backup_collection_rest_use_cached_wrapped_rpc(): wrapper_fn.reset_mock() # Ensure method has been cached - assert ( - client._transport.get_backup_collection - in client._transport._wrapped_methods - ) + assert client._transport.get_cluster 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_backup_collection] = ( - mock_rpc - ) + client._transport._wrapped_methods[client._transport.get_cluster] = mock_rpc request = {} - client.get_backup_collection(request) + client.get_cluster(request) # Establish that the underlying gRPC stub method was called. assert mock_rpc.call_count == 1 - client.get_backup_collection(request) + client.get_cluster(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_backup_collection_rest_required_fields( - request_type=cloud_redis_cluster.GetBackupCollectionRequest, +def test_get_cluster_rest_required_fields( + request_type=cloud_redis_cluster.GetClusterRequest, ): transport_class = transports.CloudRedisClusterRestTransport @@ -12951,8 +13422,8 @@ def test_get_backup_collection_rest_required_fields( # verify fields with default values are dropped default_values = getattr( - transport_class._BaseGetBackupCollection, - "_BaseGetBackupCollection__REQUIRED_FIELDS_DEFAULT_VALUES", + transport_class._BaseGetCluster, + "_BaseGetCluster__REQUIRED_FIELDS_DEFAULT_VALUES", {}, ) unset_fields = { @@ -12975,7 +13446,7 @@ def test_get_backup_collection_rest_required_fields( request = request_type(**request_init) # Designate an appropriate value for the returned response. - return_value = cloud_redis_cluster.BackupCollection() + return_value = cloud_redis_cluster.Cluster() # 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 @@ -12996,21 +13467,21 @@ def test_get_backup_collection_rest_required_fields( response_value.status_code = 200 # Convert return value to protobuf type - return_value = cloud_redis_cluster.BackupCollection.pb(return_value) + return_value = cloud_redis_cluster.Cluster.pb(return_value) json_return_value = json_format.MessageToJson(return_value) response_value._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_backup_collection(request) + response = client.get_cluster(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_backup_collection_rest_flattened(): +def test_get_cluster_rest_flattened(): client = CloudRedisClusterClient( credentials=ga_credentials.AnonymousCredentials(), transport="rest", @@ -13019,12 +13490,10 @@ def test_get_backup_collection_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 = cloud_redis_cluster.BackupCollection() + return_value = cloud_redis_cluster.Cluster() # get arguments that satisfy an http rule for this method - sample_request = { - "name": "projects/sample1/locations/sample2/backupCollections/sample3" - } + sample_request = {"name": "projects/sample1/locations/sample2/clusters/sample3"} # get truthy value for each flattened field mock_args = dict( @@ -13036,26 +13505,26 @@ def test_get_backup_collection_rest_flattened(): response_value = Response() response_value.status_code = 200 # Convert return value to protobuf type - return_value = cloud_redis_cluster.BackupCollection.pb(return_value) + return_value = cloud_redis_cluster.Cluster.pb(return_value) json_return_value = json_format.MessageToJson(return_value) response_value._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_backup_collection(**mock_args) + client.get_cluster(**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/v1beta1/{name=projects/*/locations/*/backupCollections/*}" + "%s/v1beta1/{name=projects/*/locations/*/clusters/*}" % client.transport._host, args[1], ) -def test_get_backup_collection_rest_flattened_error(transport: str = "rest"): +def test_get_cluster_rest_flattened_error(transport: str = "rest"): client = CloudRedisClusterClient( credentials=ga_credentials.AnonymousCredentials(), transport=transport, @@ -13064,13 +13533,13 @@ def test_get_backup_collection_rest_flattened_error(transport: str = "rest"): # Attempting to call a method with both a request object and flattened # fields is an error. with pytest.raises(ValueError): - client.get_backup_collection( - cloud_redis_cluster.GetBackupCollectionRequest(), + client.get_cluster( + cloud_redis_cluster.GetClusterRequest(), name="name_value", ) -def test_list_backups_rest_use_cached_wrapped_rpc(): +def test_get_acl_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: @@ -13084,35 +13553,35 @@ def test_list_backups_rest_use_cached_wrapped_rpc(): wrapper_fn.reset_mock() # Ensure method has been cached - assert client._transport.list_backups in client._transport._wrapped_methods + assert client._transport.get_acl_policy in client._transport._wrapped_methods # Replace cached wrapped function with mock mock_rpc = mock.Mock() mock_rpc.return_value.name = ( "foo" # operation_request.operation in compute client(s) expect a string. ) - client._transport._wrapped_methods[client._transport.list_backups] = mock_rpc + client._transport._wrapped_methods[client._transport.get_acl_policy] = mock_rpc request = {} - client.list_backups(request) + client.get_acl_policy(request) # Establish that the underlying gRPC stub method was called. assert mock_rpc.call_count == 1 - client.list_backups(request) + client.get_acl_policy(request) # Establish that a new wrapper was not created for this call assert wrapper_fn.call_count == 0 assert mock_rpc.call_count == 2 -def test_list_backups_rest_required_fields( - request_type=cloud_redis_cluster.ListBackupsRequest, +def test_get_acl_policy_rest_required_fields( + request_type=cloud_redis_cluster.GetAclPolicyRequest, ): transport_class = transports.CloudRedisClusterRestTransport request_init = {} - request_init["parent"] = "" + request_init["name"] = "" request = request_type(**request_init) pb_request = request_type.pb(request) jsonified_request = json.loads( @@ -13122,8 +13591,8 @@ def test_list_backups_rest_required_fields( # verify fields with default values are dropped default_values = getattr( - transport_class._BaseListBackups, - "_BaseListBackups__REQUIRED_FIELDS_DEFAULT_VALUES", + transport_class._BaseGetAclPolicy, + "_BaseGetAclPolicy__REQUIRED_FIELDS_DEFAULT_VALUES", {}, ) unset_fields = { @@ -13133,19 +13602,11 @@ def test_list_backups_rest_required_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", - ) - ) + jsonified_request["name"] = "name_value" # verify required fields with non-default values are left alone - assert "parent" in jsonified_request - assert jsonified_request["parent"] == "parent_value" + assert "name" in jsonified_request + assert jsonified_request["name"] == "name_value" client = CloudRedisClusterClient( credentials=ga_credentials.AnonymousCredentials(), @@ -13154,7 +13615,7 @@ def test_list_backups_rest_required_fields( request = request_type(**request_init) # Designate an appropriate value for the returned response. - return_value = cloud_redis_cluster.ListBackupsResponse() + return_value = cloud_redis_cluster.AclPolicy() # 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 @@ -13175,21 +13636,21 @@ def test_list_backups_rest_required_fields( response_value.status_code = 200 # Convert return value to protobuf type - return_value = cloud_redis_cluster.ListBackupsResponse.pb(return_value) + return_value = cloud_redis_cluster.AclPolicy.pb(return_value) json_return_value = json_format.MessageToJson(return_value) response_value._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_backups(request) + response = client.get_acl_policy(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_backups_rest_flattened(): +def test_get_acl_policy_rest_flattened(): client = CloudRedisClusterClient( credentials=ga_credentials.AnonymousCredentials(), transport="rest", @@ -13198,16 +13659,16 @@ def test_list_backups_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 = cloud_redis_cluster.ListBackupsResponse() + return_value = cloud_redis_cluster.AclPolicy() # get arguments that satisfy an http rule for this method sample_request = { - "parent": "projects/sample1/locations/sample2/backupCollections/sample3" + "name": "projects/sample1/locations/sample2/aclPolicies/sample3" } # get truthy value for each flattened field mock_args = dict( - parent="parent_value", + name="name_value", ) mock_args.update(sample_request) @@ -13215,26 +13676,26 @@ def test_list_backups_rest_flattened(): response_value = Response() response_value.status_code = 200 # Convert return value to protobuf type - return_value = cloud_redis_cluster.ListBackupsResponse.pb(return_value) + return_value = cloud_redis_cluster.AclPolicy.pb(return_value) json_return_value = json_format.MessageToJson(return_value) response_value._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_backups(**mock_args) + client.get_acl_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/v1beta1/{parent=projects/*/locations/*/backupCollections/*}/backups" + "%s/v1beta1/{name=projects/*/locations/*/aclPolicies/*}" % client.transport._host, args[1], ) -def test_list_backups_rest_flattened_error(transport: str = "rest"): +def test_get_acl_policy_rest_flattened_error(transport: str = "rest"): client = CloudRedisClusterClient( credentials=ga_credentials.AnonymousCredentials(), transport=transport, @@ -13243,81 +13704,13 @@ def test_list_backups_rest_flattened_error(transport: str = "rest"): # Attempting to call a method with both a request object and flattened # fields is an error. with pytest.raises(ValueError): - client.list_backups( - cloud_redis_cluster.ListBackupsRequest(), - parent="parent_value", - ) - - -def test_list_backups_rest_pager(transport: str = "rest"): - client = CloudRedisClusterClient( - 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 = ( - cloud_redis_cluster.ListBackupsResponse( - backups=[ - cloud_redis_cluster.Backup(), - cloud_redis_cluster.Backup(), - cloud_redis_cluster.Backup(), - ], - next_page_token="abc", - ), - cloud_redis_cluster.ListBackupsResponse( - backups=[], - next_page_token="def", - ), - cloud_redis_cluster.ListBackupsResponse( - backups=[ - cloud_redis_cluster.Backup(), - ], - next_page_token="ghi", - ), - cloud_redis_cluster.ListBackupsResponse( - backups=[ - cloud_redis_cluster.Backup(), - cloud_redis_cluster.Backup(), - ], - ), - ) - # Two responses for two calls - response = response + response - - # Wrap the values into proper Response objs - response = tuple( - cloud_redis_cluster.ListBackupsResponse.to_json(x) for x in response + client.get_acl_policy( + cloud_redis_cluster.GetAclPolicyRequest(), + name="name_value", ) - 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/backupCollections/sample3" - } - - pager = client.list_backups(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, cloud_redis_cluster.Backup) for i in results) - - pages = list(client.list_backups(request=sample_request).pages) - for page_, token in zip(pages, ["abc", "def", "ghi", ""]): - assert page_.raw_page.next_page_token == token -def test_get_backup_rest_use_cached_wrapped_rpc(): +def test_update_cluster_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: @@ -13331,35 +13724,38 @@ def test_get_backup_rest_use_cached_wrapped_rpc(): wrapper_fn.reset_mock() # Ensure method has been cached - assert client._transport.get_backup in client._transport._wrapped_methods + assert client._transport.update_cluster 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_backup] = mock_rpc + client._transport._wrapped_methods[client._transport.update_cluster] = mock_rpc request = {} - client.get_backup(request) + client.update_cluster(request) # Establish that the underlying gRPC stub method was called. assert mock_rpc.call_count == 1 - client.get_backup(request) + # Operation methods build a cached wrapper on first rpc call + # subsequent calls should use the cached wrapper + wrapper_fn.reset_mock() + + client.update_cluster(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_backup_rest_required_fields( - request_type=cloud_redis_cluster.GetBackupRequest, +def test_update_cluster_rest_required_fields( + request_type=cloud_redis_cluster.UpdateClusterRequest, ): transport_class = transports.CloudRedisClusterRestTransport request_init = {} - request_init["name"] = "" request = request_type(**request_init) pb_request = request_type.pb(request) jsonified_request = json.loads( @@ -13369,8 +13765,8 @@ def test_get_backup_rest_required_fields( # verify fields with default values are dropped default_values = getattr( - transport_class._BaseGetBackup, - "_BaseGetBackup__REQUIRED_FIELDS_DEFAULT_VALUES", + transport_class._BaseUpdateCluster, + "_BaseUpdateCluster__REQUIRED_FIELDS_DEFAULT_VALUES", {}, ) unset_fields = { @@ -13380,11 +13776,15 @@ def test_get_backup_rest_required_fields( # verify required fields with default values are now present - jsonified_request["name"] = "name_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 "name" in jsonified_request - assert jsonified_request["name"] == "name_value" client = CloudRedisClusterClient( credentials=ga_credentials.AnonymousCredentials(), @@ -13393,7 +13793,7 @@ def test_get_backup_rest_required_fields( request = request_type(**request_init) # Designate an appropriate value for the returned response. - return_value = cloud_redis_cluster.Backup() + return_value = operations_pb2.Operation(name="operations/spam") # 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 @@ -13405,30 +13805,28 @@ def test_get_backup_rest_required_fields( pb_request = request_type.pb(request) transcode_result = { "uri": "v1/sample_method", - "method": "get", + "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 = cloud_redis_cluster.Backup.pb(return_value) json_return_value = json_format.MessageToJson(return_value) response_value._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_backup(request) + response = client.update_cluster(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_backup_rest_flattened(): +def test_update_cluster_rest_flattened(): client = CloudRedisClusterClient( credentials=ga_credentials.AnonymousCredentials(), transport="rest", @@ -13437,43 +13835,46 @@ def test_get_backup_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 = cloud_redis_cluster.Backup() + return_value = operations_pb2.Operation(name="operations/spam") # get arguments that satisfy an http rule for this method sample_request = { - "name": "projects/sample1/locations/sample2/backupCollections/sample3/backups/sample4" + "cluster": {"name": "projects/sample1/locations/sample2/clusters/sample3"} } # get truthy value for each flattened field mock_args = dict( - name="name_value", + cluster=cloud_redis_cluster.Cluster( + gcs_source=cloud_redis_cluster.Cluster.GcsBackupSource( + uris=["uris_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 = cloud_redis_cluster.Backup.pb(return_value) json_return_value = json_format.MessageToJson(return_value) response_value._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_backup(**mock_args) + client.update_cluster(**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/v1beta1/{name=projects/*/locations/*/backupCollections/*/backups/*}" + "%s/v1beta1/{cluster.name=projects/*/locations/*/clusters/*}" % client.transport._host, args[1], ) -def test_get_backup_rest_flattened_error(transport: str = "rest"): +def test_update_cluster_rest_flattened_error(transport: str = "rest"): client = CloudRedisClusterClient( credentials=ga_credentials.AnonymousCredentials(), transport=transport, @@ -13482,13 +13883,18 @@ def test_get_backup_rest_flattened_error(transport: str = "rest"): # Attempting to call a method with both a request object and flattened # fields is an error. with pytest.raises(ValueError): - client.get_backup( - cloud_redis_cluster.GetBackupRequest(), - name="name_value", + client.update_cluster( + cloud_redis_cluster.UpdateClusterRequest(), + cluster=cloud_redis_cluster.Cluster( + gcs_source=cloud_redis_cluster.Cluster.GcsBackupSource( + uris=["uris_value"] + ) + ), + update_mask=field_mask_pb2.FieldMask(paths=["paths_value"]), ) -def test_delete_backup_rest_use_cached_wrapped_rpc(): +def test_update_acl_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: @@ -13502,17 +13908,19 @@ def test_delete_backup_rest_use_cached_wrapped_rpc(): wrapper_fn.reset_mock() # Ensure method has been cached - assert client._transport.delete_backup in client._transport._wrapped_methods + assert client._transport.update_acl_policy in client._transport._wrapped_methods # Replace cached wrapped function with mock mock_rpc = mock.Mock() mock_rpc.return_value.name = ( "foo" # operation_request.operation in compute client(s) expect a string. ) - client._transport._wrapped_methods[client._transport.delete_backup] = mock_rpc + client._transport._wrapped_methods[client._transport.update_acl_policy] = ( + mock_rpc + ) request = {} - client.delete_backup(request) + client.update_acl_policy(request) # Establish that the underlying gRPC stub method was called. assert mock_rpc.call_count == 1 @@ -13521,20 +13929,19 @@ def test_delete_backup_rest_use_cached_wrapped_rpc(): # subsequent calls should use the cached wrapper wrapper_fn.reset_mock() - client.delete_backup(request) + client.update_acl_policy(request) # Establish that a new wrapper was not created for this call assert wrapper_fn.call_count == 0 assert mock_rpc.call_count == 2 -def test_delete_backup_rest_required_fields( - request_type=cloud_redis_cluster.DeleteBackupRequest, +def test_update_acl_policy_rest_required_fields( + request_type=cloud_redis_cluster.UpdateAclPolicyRequest, ): transport_class = transports.CloudRedisClusterRestTransport request_init = {} - request_init["name"] = "" request = request_type(**request_init) pb_request = request_type.pb(request) jsonified_request = json.loads( @@ -13544,8 +13951,8 @@ def test_delete_backup_rest_required_fields( # verify fields with default values are dropped default_values = getattr( - transport_class._BaseDeleteBackup, - "_BaseDeleteBackup__REQUIRED_FIELDS_DEFAULT_VALUES", + transport_class._BaseUpdateAclPolicy, + "_BaseUpdateAclPolicy__REQUIRED_FIELDS_DEFAULT_VALUES", {}, ) unset_fields = { @@ -13555,14 +13962,15 @@ def test_delete_backup_rest_required_fields( # verify required fields with default values are now present - jsonified_request["name"] = "name_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", + "updateMask", + ) + ) # verify required fields with non-default values are left alone - assert "name" in jsonified_request - assert jsonified_request["name"] == "name_value" client = CloudRedisClusterClient( credentials=ga_credentials.AnonymousCredentials(), @@ -13583,9 +13991,10 @@ def test_delete_backup_rest_required_fields( pb_request = request_type.pb(request) transcode_result = { "uri": "v1/sample_method", - "method": "delete", + "method": "patch", "query_params": pb_request, } + transcode_result["body"] = pb_request transcode.return_value = transcode_result response_value = Response() @@ -13596,14 +14005,14 @@ def test_delete_backup_rest_required_fields( req.return_value = response_value req.return_value.headers = {"header-1": "value-1", "header-2": "value-2"} - response = client.delete_backup(request) + response = client.update_acl_policy(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_backup_rest_flattened(): +def test_update_acl_policy_rest_flattened(): client = CloudRedisClusterClient( credentials=ga_credentials.AnonymousCredentials(), transport="rest", @@ -13616,12 +14025,15 @@ def test_delete_backup_rest_flattened(): # get arguments that satisfy an http rule for this method sample_request = { - "name": "projects/sample1/locations/sample2/backupCollections/sample3/backups/sample4" + "acl_policy": { + "name": "projects/sample1/locations/sample2/aclPolicies/sample3" + } } # get truthy value for each flattened field mock_args = dict( - name="name_value", + acl_policy=cloud_redis_cluster.AclPolicy(name="name_value"), + update_mask=field_mask_pb2.FieldMask(paths=["paths_value"]), ) mock_args.update(sample_request) @@ -13633,20 +14045,20 @@ def test_delete_backup_rest_flattened(): req.return_value = response_value req.return_value.headers = {"header-1": "value-1", "header-2": "value-2"} - client.delete_backup(**mock_args) + client.update_acl_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/v1beta1/{name=projects/*/locations/*/backupCollections/*/backups/*}" + "%s/v1beta1/{acl_policy.name=projects/*/locations/*/aclPolicies/*}" % client.transport._host, args[1], ) -def test_delete_backup_rest_flattened_error(transport: str = "rest"): +def test_update_acl_policy_rest_flattened_error(transport: str = "rest"): client = CloudRedisClusterClient( credentials=ga_credentials.AnonymousCredentials(), transport=transport, @@ -13655,13 +14067,14 @@ def test_delete_backup_rest_flattened_error(transport: str = "rest"): # Attempting to call a method with both a request object and flattened # fields is an error. with pytest.raises(ValueError): - client.delete_backup( - cloud_redis_cluster.DeleteBackupRequest(), - name="name_value", + client.update_acl_policy( + cloud_redis_cluster.UpdateAclPolicyRequest(), + acl_policy=cloud_redis_cluster.AclPolicy(name="name_value"), + update_mask=field_mask_pb2.FieldMask(paths=["paths_value"]), ) -def test_export_backup_rest_use_cached_wrapped_rpc(): +def test_delete_cluster_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: @@ -13675,17 +14088,17 @@ def test_export_backup_rest_use_cached_wrapped_rpc(): wrapper_fn.reset_mock() # Ensure method has been cached - assert client._transport.export_backup in client._transport._wrapped_methods + assert client._transport.delete_cluster 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.export_backup] = mock_rpc + client._transport._wrapped_methods[client._transport.delete_cluster] = mock_rpc request = {} - client.export_backup(request) + client.delete_cluster(request) # Establish that the underlying gRPC stub method was called. assert mock_rpc.call_count == 1 @@ -13694,15 +14107,15 @@ def test_export_backup_rest_use_cached_wrapped_rpc(): # subsequent calls should use the cached wrapper wrapper_fn.reset_mock() - client.export_backup(request) + client.delete_cluster(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_export_backup_rest_required_fields( - request_type=cloud_redis_cluster.ExportBackupRequest, +def test_delete_cluster_rest_required_fields( + request_type=cloud_redis_cluster.DeleteClusterRequest, ): transport_class = transports.CloudRedisClusterRestTransport @@ -13717,8 +14130,8 @@ def test_export_backup_rest_required_fields( # verify fields with default values are dropped default_values = getattr( - transport_class._BaseExportBackup, - "_BaseExportBackup__REQUIRED_FIELDS_DEFAULT_VALUES", + transport_class._BaseDeleteCluster, + "_BaseDeleteCluster__REQUIRED_FIELDS_DEFAULT_VALUES", {}, ) unset_fields = { @@ -13730,6 +14143,9 @@ def test_export_backup_rest_required_fields( jsonified_request["name"] = "name_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 "name" in jsonified_request assert jsonified_request["name"] == "name_value" @@ -13753,10 +14169,9 @@ def test_export_backup_rest_required_fields( pb_request = request_type.pb(request) transcode_result = { "uri": "v1/sample_method", - "method": "post", + "method": "delete", "query_params": pb_request, } - transcode_result["body"] = pb_request transcode.return_value = transcode_result response_value = Response() @@ -13767,38 +14182,96 @@ def test_export_backup_rest_required_fields( req.return_value = response_value req.return_value.headers = {"header-1": "value-1", "header-2": "value-2"} - response = client.export_backup(request) + response = client.delete_cluster(request) expected_params = [("$alt", "json;enum-encoding=int")] actual_params = req.call_args.kwargs["params"] assert sorted(expected_params) == sorted(actual_params) -def test_backup_cluster_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 = CloudRedisClusterClient( - credentials=ga_credentials.AnonymousCredentials(), - transport="rest", - ) - - # Should wrap all calls on client creation +def test_delete_cluster_rest_flattened(): + client = CloudRedisClusterClient( + 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 = operations_pb2.Operation(name="operations/spam") + + # get arguments that satisfy an http rule for this method + sample_request = {"name": "projects/sample1/locations/sample2/clusters/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 = json_format.MessageToJson(return_value) + response_value._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_cluster(**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/v1beta1/{name=projects/*/locations/*/clusters/*}" + % client.transport._host, + args[1], + ) + + +def test_delete_cluster_rest_flattened_error(transport: str = "rest"): + client = CloudRedisClusterClient( + 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_cluster( + cloud_redis_cluster.DeleteClusterRequest(), + name="name_value", + ) + + +def test_delete_acl_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 = CloudRedisClusterClient( + 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.backup_cluster in client._transport._wrapped_methods + assert client._transport.delete_acl_policy in client._transport._wrapped_methods # Replace cached wrapped function with mock mock_rpc = mock.Mock() mock_rpc.return_value.name = ( "foo" # operation_request.operation in compute client(s) expect a string. ) - client._transport._wrapped_methods[client._transport.backup_cluster] = mock_rpc + client._transport._wrapped_methods[client._transport.delete_acl_policy] = ( + mock_rpc + ) request = {} - client.backup_cluster(request) + client.delete_acl_policy(request) # Establish that the underlying gRPC stub method was called. assert mock_rpc.call_count == 1 @@ -13807,15 +14280,15 @@ def test_backup_cluster_rest_use_cached_wrapped_rpc(): # subsequent calls should use the cached wrapper wrapper_fn.reset_mock() - client.backup_cluster(request) + client.delete_acl_policy(request) # Establish that a new wrapper was not created for this call assert wrapper_fn.call_count == 0 assert mock_rpc.call_count == 2 -def test_backup_cluster_rest_required_fields( - request_type=cloud_redis_cluster.BackupClusterRequest, +def test_delete_acl_policy_rest_required_fields( + request_type=cloud_redis_cluster.DeleteAclPolicyRequest, ): transport_class = transports.CloudRedisClusterRestTransport @@ -13830,8 +14303,8 @@ def test_backup_cluster_rest_required_fields( # verify fields with default values are dropped default_values = getattr( - transport_class._BaseBackupCluster, - "_BaseBackupCluster__REQUIRED_FIELDS_DEFAULT_VALUES", + transport_class._BaseDeleteAclPolicy, + "_BaseDeleteAclPolicy__REQUIRED_FIELDS_DEFAULT_VALUES", {}, ) unset_fields = { @@ -13843,6 +14316,14 @@ def test_backup_cluster_rest_required_fields( jsonified_request["name"] = "name_value" + # Check that path parameters and body parameters are not mixing in. + assert not set(unset_fields) - set( + ( + "etag", + "requestId", + ) + ) + # verify required fields with non-default values are left alone assert "name" in jsonified_request assert jsonified_request["name"] == "name_value" @@ -13866,10 +14347,9 @@ def test_backup_cluster_rest_required_fields( pb_request = request_type.pb(request) transcode_result = { "uri": "v1/sample_method", - "method": "post", + "method": "delete", "query_params": pb_request, } - transcode_result["body"] = pb_request transcode.return_value = transcode_result response_value = Response() @@ -13880,14 +14360,14 @@ def test_backup_cluster_rest_required_fields( req.return_value = response_value req.return_value.headers = {"header-1": "value-1", "header-2": "value-2"} - response = client.backup_cluster(request) + response = client.delete_acl_policy(request) expected_params = [("$alt", "json;enum-encoding=int")] actual_params = req.call_args.kwargs["params"] assert sorted(expected_params) == sorted(actual_params) -def test_backup_cluster_rest_flattened(): +def test_delete_acl_policy_rest_flattened(): client = CloudRedisClusterClient( credentials=ga_credentials.AnonymousCredentials(), transport="rest", @@ -13899,7 +14379,9 @@ def test_backup_cluster_rest_flattened(): return_value = operations_pb2.Operation(name="operations/spam") # get arguments that satisfy an http rule for this method - sample_request = {"name": "projects/sample1/locations/sample2/clusters/sample3"} + sample_request = { + "name": "projects/sample1/locations/sample2/aclPolicies/sample3" + } # get truthy value for each flattened field mock_args = dict( @@ -13915,20 +14397,20 @@ def test_backup_cluster_rest_flattened(): req.return_value = response_value req.return_value.headers = {"header-1": "value-1", "header-2": "value-2"} - client.backup_cluster(**mock_args) + client.delete_acl_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/v1beta1/{name=projects/*/locations/*/clusters/*}:backup" + "%s/v1beta1/{name=projects/*/locations/*/aclPolicies/*}" % client.transport._host, args[1], ) -def test_backup_cluster_rest_flattened_error(transport: str = "rest"): +def test_delete_acl_policy_rest_flattened_error(transport: str = "rest"): client = CloudRedisClusterClient( credentials=ga_credentials.AnonymousCredentials(), transport=transport, @@ -13937,1227 +14419,7366 @@ def test_backup_cluster_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.backup_cluster( - cloud_redis_cluster.BackupClusterRequest(), + client.delete_acl_policy( + cloud_redis_cluster.DeleteAclPolicyRequest(), name="name_value", ) -def test_credentials_transport_error(): - # It is an error to provide credentials and a transport instance. - transport = transports.CloudRedisClusterGrpcTransport( - credentials=ga_credentials.AnonymousCredentials(), - ) - with pytest.raises(ValueError): +def test_get_acl_policy_revision_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 = CloudRedisClusterClient( credentials=ga_credentials.AnonymousCredentials(), - transport=transport, - ) - - # It is an error to provide a credentials file and a transport instance. - transport = transports.CloudRedisClusterGrpcTransport( - credentials=ga_credentials.AnonymousCredentials(), - ) - with pytest.raises(ValueError): - client = CloudRedisClusterClient( - client_options={"credentials_file": "credentials.json"}, - transport=transport, + transport="rest", ) - # It is an error to provide an api_key and a transport instance. - transport = transports.CloudRedisClusterGrpcTransport( - credentials=ga_credentials.AnonymousCredentials(), - ) - options = client_options.ClientOptions() - options.api_key = "api_key" - with pytest.raises(ValueError): - client = CloudRedisClusterClient( - client_options=options, - 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 credential. - options = client_options.ClientOptions() - options.api_key = "api_key" - with pytest.raises(ValueError): - client = CloudRedisClusterClient( - client_options=options, credentials=ga_credentials.AnonymousCredentials() + # Ensure method has been cached + assert ( + client._transport.get_acl_policy_revision + in client._transport._wrapped_methods ) - # It is an error to provide scopes and a transport instance. - transport = transports.CloudRedisClusterGrpcTransport( - credentials=ga_credentials.AnonymousCredentials(), - ) - with pytest.raises(ValueError): - client = CloudRedisClusterClient( - client_options={"scopes": ["1", "2"]}, - 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.get_acl_policy_revision + ] = mock_rpc + request = {} + client.get_acl_policy_revision(request) -def test_transport_instance(): - # A client may be instantiated with a custom transport instance. - transport = transports.CloudRedisClusterGrpcTransport( - credentials=ga_credentials.AnonymousCredentials(), - ) - client = CloudRedisClusterClient(transport=transport) - assert client.transport is transport + # Establish that the underlying gRPC stub method was called. + assert mock_rpc.call_count == 1 + client.get_acl_policy_revision(request) -def test_transport_get_channel(): - # A client may be instantiated with a custom transport instance. - transport = transports.CloudRedisClusterGrpcTransport( - credentials=ga_credentials.AnonymousCredentials(), - ) - channel = transport.grpc_channel - assert channel + # Establish that a new wrapper was not created for this call + assert wrapper_fn.call_count == 0 + assert mock_rpc.call_count == 2 - transport = transports.CloudRedisClusterGrpcAsyncIOTransport( - credentials=ga_credentials.AnonymousCredentials(), - ) - channel = transport.grpc_channel - assert channel +def test_get_acl_policy_revision_rest_required_fields( + request_type=cloud_redis_cluster.GetAclPolicyRevisionRequest, +): + transport_class = transports.CloudRedisClusterRestTransport -@pytest.mark.parametrize( - "transport_class", - [ - transports.CloudRedisClusterGrpcTransport, - transports.CloudRedisClusterGrpcAsyncIOTransport, - transports.CloudRedisClusterRestTransport, - ], -) -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() + 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 -def test_transport_kind_grpc(): - transport = CloudRedisClusterClient.get_transport_class("grpc")( - credentials=ga_credentials.AnonymousCredentials() + default_values = getattr( + transport_class._BaseGetAclPolicyRevision, + "_BaseGetAclPolicyRevision__REQUIRED_FIELDS_DEFAULT_VALUES", + {}, ) - assert transport.kind == "grpc" + 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 -def test_initialize_client_w_grpc(): - client = CloudRedisClusterClient( - credentials=ga_credentials.AnonymousCredentials(), transport="grpc" - ) - assert client is not None + 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" -# 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_clusters_empty_call_grpc(): client = CloudRedisClusterClient( credentials=ga_credentials.AnonymousCredentials(), - transport="grpc", + transport="rest", ) + request = request_type(**request_init) - # Mock the actual call, and fake the request. - with mock.patch.object(type(client.transport.list_clusters), "__call__") as call: - call.return_value = cloud_redis_cluster.ListClustersResponse() - client.list_clusters(request=None) + # Designate an appropriate value for the returned response. + return_value = cloud_redis_cluster.AclPolicyRevision() + # 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 - # Establish that the underlying stub method was called. - call.assert_called() - _, args, _ = call.mock_calls[0] - request_msg = cloud_redis_cluster.ListClustersRequest() - assert args[0] == request_msg + response_value = Response() + response_value.status_code = 200 + # Convert return value to protobuf type + return_value = cloud_redis_cluster.AclPolicyRevision.pb(return_value) + json_return_value = json_format.MessageToJson(return_value) -# 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_acl_policies_empty_call_grpc(): - client = CloudRedisClusterClient( - credentials=ga_credentials.AnonymousCredentials(), - transport="grpc", - ) + response_value._content = json_return_value.encode("UTF-8") + req.return_value = response_value + req.return_value.headers = {"header-1": "value-1", "header-2": "value-2"} - # Mock the actual call, and fake the request. - with mock.patch.object( - type(client.transport.list_acl_policies), "__call__" - ) as call: - call.return_value = cloud_redis_cluster.ListAclPoliciesResponse() - client.list_acl_policies(request=None) + response = client.get_acl_policy_revision(request) - # Establish that the underlying stub method was called. - call.assert_called() - _, args, _ = call.mock_calls[0] - request_msg = cloud_redis_cluster.ListAclPoliciesRequest() - assert args[0] == request_msg + expected_params = [("$alt", "json;enum-encoding=int")] + actual_params = req.call_args.kwargs["params"] + assert sorted(expected_params) == sorted(actual_params) -# 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_cluster_empty_call_grpc(): +def test_get_acl_policy_revision_rest_flattened(): client = CloudRedisClusterClient( credentials=ga_credentials.AnonymousCredentials(), - transport="grpc", + transport="rest", ) - # Mock the actual call, and fake the request. - with mock.patch.object(type(client.transport.get_cluster), "__call__") as call: - call.return_value = cloud_redis_cluster.Cluster() - client.get_cluster(request=None) + # 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 = cloud_redis_cluster.AclPolicyRevision() - # Establish that the underlying stub method was called. - call.assert_called() - _, args, _ = call.mock_calls[0] - request_msg = cloud_redis_cluster.GetClusterRequest() - assert args[0] == request_msg + # get arguments that satisfy an http rule for this method + sample_request = { + "name": "projects/sample1/locations/sample2/aclPolicies/sample3/revisions/sample4" + } + # get truthy value for each flattened field + mock_args = dict( + name="name_value", + ) + mock_args.update(sample_request) -# 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_acl_policy_empty_call_grpc(): - client = CloudRedisClusterClient( - credentials=ga_credentials.AnonymousCredentials(), - transport="grpc", - ) + # Wrap the value into a proper Response obj + response_value = Response() + response_value.status_code = 200 + # Convert return value to protobuf type + return_value = cloud_redis_cluster.AclPolicyRevision.pb(return_value) + json_return_value = json_format.MessageToJson(return_value) + response_value._content = json_return_value.encode("UTF-8") + req.return_value = response_value + req.return_value.headers = {"header-1": "value-1", "header-2": "value-2"} - # Mock the actual call, and fake the request. - with mock.patch.object(type(client.transport.get_acl_policy), "__call__") as call: - call.return_value = cloud_redis_cluster.AclPolicy() - client.get_acl_policy(request=None) + client.get_acl_policy_revision(**mock_args) - # Establish that the underlying stub method was called. - call.assert_called() - _, args, _ = call.mock_calls[0] - request_msg = cloud_redis_cluster.GetAclPolicyRequest() - assert args[0] == request_msg + # 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/v1beta1/{name=projects/*/locations/*/aclPolicies/*/revisions/*}" + % client.transport._host, + args[1], + ) -# 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_cluster_empty_call_grpc(): +def test_get_acl_policy_revision_rest_flattened_error(transport: str = "rest"): client = CloudRedisClusterClient( credentials=ga_credentials.AnonymousCredentials(), - transport="grpc", + transport=transport, ) - # Mock the actual call, and fake the request. - with mock.patch.object(type(client.transport.update_cluster), "__call__") as call: - call.return_value = operations_pb2.Operation(name="operations/op") - client.update_cluster(request=None) + # Attempting to call a method with both a request object and flattened + # fields is an error. + with pytest.raises(ValueError): + client.get_acl_policy_revision( + cloud_redis_cluster.GetAclPolicyRevisionRequest(), + name="name_value", + ) - # Establish that the underlying stub method was called. - call.assert_called() - _, args, _ = call.mock_calls[0] - request_msg = cloud_redis_cluster.UpdateClusterRequest() - assert args[0] == request_msg +def test_list_acl_policy_revisions_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 = CloudRedisClusterClient( + credentials=ga_credentials.AnonymousCredentials(), + transport="rest", + ) -# 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_acl_policy_empty_call_grpc(): - client = CloudRedisClusterClient( - credentials=ga_credentials.AnonymousCredentials(), - transport="grpc", - ) + # Should wrap all calls on client creation + assert wrapper_fn.call_count > 0 + wrapper_fn.reset_mock() - # Mock the actual call, and fake the request. - with mock.patch.object( - type(client.transport.update_acl_policy), "__call__" - ) as call: - call.return_value = operations_pb2.Operation(name="operations/op") - client.update_acl_policy(request=None) + # Ensure method has been cached + assert ( + client._transport.list_acl_policy_revisions + in client._transport._wrapped_methods + ) - # Establish that the underlying stub method was called. - call.assert_called() - _, args, _ = call.mock_calls[0] - request_msg = cloud_redis_cluster.UpdateAclPolicyRequest() - assert args[0] == request_msg + # 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_acl_policy_revisions + ] = mock_rpc + request = {} + client.list_acl_policy_revisions(request) -# 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_cluster_empty_call_grpc(): - client = CloudRedisClusterClient( - credentials=ga_credentials.AnonymousCredentials(), - transport="grpc", - ) + # Establish that the underlying gRPC stub method was called. + assert mock_rpc.call_count == 1 - # Mock the actual call, and fake the request. - with mock.patch.object(type(client.transport.delete_cluster), "__call__") as call: - call.return_value = operations_pb2.Operation(name="operations/op") - client.delete_cluster(request=None) + client.list_acl_policy_revisions(request) - # Establish that the underlying stub method was called. - call.assert_called() - _, args, _ = call.mock_calls[0] - request_msg = cloud_redis_cluster.DeleteClusterRequest() - assert args[0] == request_msg + # Establish that a new wrapper was not created for this call + assert wrapper_fn.call_count == 0 + assert mock_rpc.call_count == 2 -# 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_acl_policy_empty_call_grpc(): - client = CloudRedisClusterClient( - credentials=ga_credentials.AnonymousCredentials(), - transport="grpc", +def test_list_acl_policy_revisions_rest_required_fields( + request_type=cloud_redis_cluster.ListAclPolicyRevisionsRequest, +): + transport_class = transports.CloudRedisClusterRestTransport + + 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) ) - # Mock the actual call, and fake the request. - with mock.patch.object( - type(client.transport.delete_acl_policy), "__call__" - ) as call: - call.return_value = operations_pb2.Operation(name="operations/op") - client.delete_acl_policy(request=None) + # verify fields with default values are dropped - # Establish that the underlying stub method was called. - call.assert_called() - _, args, _ = call.mock_calls[0] - request_msg = cloud_redis_cluster.DeleteAclPolicyRequest() - assert args[0] == request_msg + default_values = getattr( + transport_class._BaseListAclPolicyRevisions, + "_BaseListAclPolicyRevisions__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 -# 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_acl_policy_revision_empty_call_grpc(): - client = CloudRedisClusterClient( - credentials=ga_credentials.AnonymousCredentials(), - transport="grpc", - ) + jsonified_request["parent"] = "parent_value" - # Mock the actual call, and fake the request. - with mock.patch.object( - type(client.transport.get_acl_policy_revision), "__call__" - ) as call: - call.return_value = cloud_redis_cluster.AclPolicyRevision() - client.get_acl_policy_revision(request=None) - - # Establish that the underlying stub method was called. - call.assert_called() - _, args, _ = call.mock_calls[0] - request_msg = cloud_redis_cluster.GetAclPolicyRevisionRequest() - assert args[0] == request_msg + # 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" -# 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_acl_policy_revisions_empty_call_grpc(): client = CloudRedisClusterClient( credentials=ga_credentials.AnonymousCredentials(), - transport="grpc", + transport="rest", ) + request = request_type(**request_init) - # Mock the actual call, and fake the request. - with mock.patch.object( - type(client.transport.list_acl_policy_revisions), "__call__" - ) as call: - call.return_value = cloud_redis_cluster.ListAclPolicyRevisionsResponse() - client.list_acl_policy_revisions(request=None) + # Designate an appropriate value for the returned response. + return_value = cloud_redis_cluster.ListAclPolicyRevisionsResponse() + # 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 - # Establish that the underlying stub method was called. - call.assert_called() - _, args, _ = call.mock_calls[0] - request_msg = cloud_redis_cluster.ListAclPolicyRevisionsRequest() - assert args[0] == request_msg + response_value = Response() + response_value.status_code = 200 + # Convert return value to protobuf type + return_value = cloud_redis_cluster.ListAclPolicyRevisionsResponse.pb( + return_value + ) + json_return_value = json_format.MessageToJson(return_value) -# 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_cluster_empty_call_grpc(): - client = CloudRedisClusterClient( - credentials=ga_credentials.AnonymousCredentials(), - transport="grpc", - ) + response_value._content = json_return_value.encode("UTF-8") + req.return_value = response_value + req.return_value.headers = {"header-1": "value-1", "header-2": "value-2"} - # Mock the actual call, and fake the request. - with mock.patch.object(type(client.transport.create_cluster), "__call__") as call: - call.return_value = operations_pb2.Operation(name="operations/op") - client.create_cluster(request=None) + response = client.list_acl_policy_revisions(request) - # Establish that the underlying stub method was called. - call.assert_called() - _, args, _ = call.mock_calls[0] - request_msg = cloud_redis_cluster.CreateClusterRequest() - assert args[0] == request_msg + expected_params = [("$alt", "json;enum-encoding=int")] + actual_params = req.call_args.kwargs["params"] + assert sorted(expected_params) == sorted(actual_params) -# 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_acl_policy_empty_call_grpc(): +def test_list_acl_policy_revisions_rest_flattened(): client = CloudRedisClusterClient( credentials=ga_credentials.AnonymousCredentials(), - transport="grpc", + transport="rest", ) - # Mock the actual call, and fake the request. - with mock.patch.object( - type(client.transport.create_acl_policy), "__call__" - ) as call: - call.return_value = cloud_redis_cluster.AclPolicy() - client.create_acl_policy(request=None) + # 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 = cloud_redis_cluster.ListAclPolicyRevisionsResponse() - # Establish that the underlying stub method was called. - call.assert_called() - _, args, _ = call.mock_calls[0] - request_msg = cloud_redis_cluster.CreateAclPolicyRequest() - assert args[0] == request_msg + # get arguments that satisfy an http rule for this method + sample_request = { + "parent": "projects/sample1/locations/sample2/aclPolicies/sample3" + } + # get truthy value for each flattened field + mock_args = dict( + parent="parent_value", + ) + mock_args.update(sample_request) -# 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_cluster_certificate_authority_empty_call_grpc(): - client = CloudRedisClusterClient( - credentials=ga_credentials.AnonymousCredentials(), - transport="grpc", - ) + # Wrap the value into a proper Response obj + response_value = Response() + response_value.status_code = 200 + # Convert return value to protobuf type + return_value = cloud_redis_cluster.ListAclPolicyRevisionsResponse.pb( + return_value + ) + json_return_value = json_format.MessageToJson(return_value) + response_value._content = json_return_value.encode("UTF-8") + req.return_value = response_value + req.return_value.headers = {"header-1": "value-1", "header-2": "value-2"} - # Mock the actual call, and fake the request. - with mock.patch.object( - type(client.transport.get_cluster_certificate_authority), "__call__" - ) as call: - call.return_value = cloud_redis_cluster.CertificateAuthority() - client.get_cluster_certificate_authority(request=None) + client.list_acl_policy_revisions(**mock_args) - # Establish that the underlying stub method was called. - call.assert_called() - _, args, _ = call.mock_calls[0] - request_msg = cloud_redis_cluster.GetClusterCertificateAuthorityRequest() - assert args[0] == request_msg + # 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/v1beta1/{parent=projects/*/locations/*/aclPolicies/*}/revisions" + % client.transport._host, + args[1], + ) -# 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_shared_regional_certificate_authority_empty_call_grpc(): +def test_list_acl_policy_revisions_rest_flattened_error(transport: str = "rest"): client = CloudRedisClusterClient( credentials=ga_credentials.AnonymousCredentials(), - transport="grpc", + transport=transport, ) - # Mock the actual call, and fake the request. - with mock.patch.object( - type(client.transport.get_shared_regional_certificate_authority), "__call__" - ) as call: - call.return_value = cloud_redis_cluster.SharedRegionalCertificateAuthority() - client.get_shared_regional_certificate_authority(request=None) - - # Establish that the underlying stub method was called. - call.assert_called() - _, args, _ = call.mock_calls[0] - request_msg = cloud_redis_cluster.GetSharedRegionalCertificateAuthorityRequest() - assert args[0] == request_msg + # Attempting to call a method with both a request object and flattened + # fields is an error. + with pytest.raises(ValueError): + client.list_acl_policy_revisions( + cloud_redis_cluster.ListAclPolicyRevisionsRequest(), + parent="parent_value", + ) -# 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_reschedule_cluster_maintenance_empty_call_grpc(): +def test_list_acl_policy_revisions_rest_pager(transport: str = "rest"): client = CloudRedisClusterClient( credentials=ga_credentials.AnonymousCredentials(), - transport="grpc", + transport=transport, ) - # Mock the actual call, and fake the request. - with mock.patch.object( - type(client.transport.reschedule_cluster_maintenance), "__call__" - ) as call: - call.return_value = operations_pb2.Operation(name="operations/op") - client.reschedule_cluster_maintenance(request=None) + # 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 = ( + cloud_redis_cluster.ListAclPolicyRevisionsResponse( + acl_policy_revisions=[ + cloud_redis_cluster.AclPolicyRevision(), + cloud_redis_cluster.AclPolicyRevision(), + cloud_redis_cluster.AclPolicyRevision(), + ], + next_page_token="abc", + ), + cloud_redis_cluster.ListAclPolicyRevisionsResponse( + acl_policy_revisions=[], + next_page_token="def", + ), + cloud_redis_cluster.ListAclPolicyRevisionsResponse( + acl_policy_revisions=[ + cloud_redis_cluster.AclPolicyRevision(), + ], + next_page_token="ghi", + ), + cloud_redis_cluster.ListAclPolicyRevisionsResponse( + acl_policy_revisions=[ + cloud_redis_cluster.AclPolicyRevision(), + cloud_redis_cluster.AclPolicyRevision(), + ], + ), + ) + # Two responses for two calls + response = response + response - # Establish that the underlying stub method was called. - call.assert_called() - _, args, _ = call.mock_calls[0] - request_msg = cloud_redis_cluster.RescheduleClusterMaintenanceRequest() - assert args[0] == request_msg + # Wrap the values into proper Response objs + response = tuple( + cloud_redis_cluster.ListAclPolicyRevisionsResponse.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/aclPolicies/sample3" + } -# 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_backup_collections_empty_call_grpc(): - client = CloudRedisClusterClient( - credentials=ga_credentials.AnonymousCredentials(), - transport="grpc", - ) + pager = client.list_acl_policy_revisions(request=sample_request) - # Mock the actual call, and fake the request. - with mock.patch.object( - type(client.transport.list_backup_collections), "__call__" - ) as call: - call.return_value = cloud_redis_cluster.ListBackupCollectionsResponse() - client.list_backup_collections(request=None) + assert pager.next_page_token == "abc" + assert str(pager).startswith(f"{pager.__class__.__name__}<") - # Establish that the underlying stub method was called. - call.assert_called() - _, args, _ = call.mock_calls[0] - request_msg = cloud_redis_cluster.ListBackupCollectionsRequest() - assert args[0] == request_msg + results = list(pager) + assert len(results) == 6 + assert all( + isinstance(i, cloud_redis_cluster.AclPolicyRevision) for i in results + ) + pages = list(client.list_acl_policy_revisions(request=sample_request).pages) + for page_, token in zip(pages, ["abc", "def", "ghi", ""]): + assert page_.raw_page.next_page_token == token -# 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_backup_collection_empty_call_grpc(): - client = CloudRedisClusterClient( - credentials=ga_credentials.AnonymousCredentials(), - transport="grpc", - ) - # Mock the actual call, and fake the request. - with mock.patch.object( - type(client.transport.get_backup_collection), "__call__" - ) as call: - call.return_value = cloud_redis_cluster.BackupCollection() - client.get_backup_collection(request=None) +def test_create_cluster_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 = CloudRedisClusterClient( + credentials=ga_credentials.AnonymousCredentials(), + transport="rest", + ) - # Establish that the underlying stub method was called. - call.assert_called() - _, args, _ = call.mock_calls[0] - request_msg = cloud_redis_cluster.GetBackupCollectionRequest() - assert args[0] == request_msg + # 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_cluster in client._transport._wrapped_methods -# 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_backups_empty_call_grpc(): - client = CloudRedisClusterClient( - credentials=ga_credentials.AnonymousCredentials(), - transport="grpc", - ) + # 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_cluster] = mock_rpc - # Mock the actual call, and fake the request. - with mock.patch.object(type(client.transport.list_backups), "__call__") as call: - call.return_value = cloud_redis_cluster.ListBackupsResponse() - client.list_backups(request=None) + request = {} + client.create_cluster(request) - # Establish that the underlying stub method was called. - call.assert_called() - _, args, _ = call.mock_calls[0] - request_msg = cloud_redis_cluster.ListBackupsRequest() - assert args[0] == request_msg + # 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() -# 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_backup_empty_call_grpc(): - client = CloudRedisClusterClient( - credentials=ga_credentials.AnonymousCredentials(), - transport="grpc", - ) + client.create_cluster(request) - # Mock the actual call, and fake the request. - with mock.patch.object(type(client.transport.get_backup), "__call__") as call: - call.return_value = cloud_redis_cluster.Backup() - client.get_backup(request=None) + # Establish that a new wrapper was not created for this call + assert wrapper_fn.call_count == 0 + assert mock_rpc.call_count == 2 - # Establish that the underlying stub method was called. - call.assert_called() - _, args, _ = call.mock_calls[0] - request_msg = cloud_redis_cluster.GetBackupRequest() - assert args[0] == request_msg +def test_create_cluster_rest_required_fields( + request_type=cloud_redis_cluster.CreateClusterRequest, +): + transport_class = transports.CloudRedisClusterRestTransport -# 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_backup_empty_call_grpc(): - client = CloudRedisClusterClient( - credentials=ga_credentials.AnonymousCredentials(), - transport="grpc", + request_init = {} + request_init["parent"] = "" + request_init["cluster_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) ) - # Mock the actual call, and fake the request. - with mock.patch.object(type(client.transport.delete_backup), "__call__") as call: - call.return_value = operations_pb2.Operation(name="operations/op") - client.delete_backup(request=None) - - # Establish that the underlying stub method was called. - call.assert_called() - _, args, _ = call.mock_calls[0] - request_msg = cloud_redis_cluster.DeleteBackupRequest() - assert args[0] == request_msg - + # verify fields with default values are dropped + assert "clusterId" not in jsonified_request -# 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_export_backup_empty_call_grpc(): - client = CloudRedisClusterClient( - credentials=ga_credentials.AnonymousCredentials(), - transport="grpc", + default_values = getattr( + transport_class._BaseCreateCluster, + "_BaseCreateCluster__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) - # Mock the actual call, and fake the request. - with mock.patch.object(type(client.transport.export_backup), "__call__") as call: - call.return_value = operations_pb2.Operation(name="operations/op") - client.export_backup(request=None) + # verify required fields with default values are now present + assert "clusterId" in jsonified_request + assert jsonified_request["clusterId"] == request_init["cluster_id"] - # Establish that the underlying stub method was called. - call.assert_called() - _, args, _ = call.mock_calls[0] - request_msg = cloud_redis_cluster.ExportBackupRequest() - assert args[0] == request_msg + jsonified_request["parent"] = "parent_value" + jsonified_request["clusterId"] = "cluster_id_value" + # Check that path parameters and body parameters are not mixing in. + assert not set(unset_fields) - set( + ( + "clusterId", + "requestId", + ) + ) + + # verify required fields with non-default values are left alone + assert "parent" in jsonified_request + assert jsonified_request["parent"] == "parent_value" + assert "clusterId" in jsonified_request + assert jsonified_request["clusterId"] == "cluster_id_value" -# 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_backup_cluster_empty_call_grpc(): client = CloudRedisClusterClient( credentials=ga_credentials.AnonymousCredentials(), - transport="grpc", + transport="rest", ) + request = request_type(**request_init) - # Mock the actual call, and fake the request. - with mock.patch.object(type(client.transport.backup_cluster), "__call__") as call: - call.return_value = operations_pb2.Operation(name="operations/op") - client.backup_cluster(request=None) - - # Establish that the underlying stub method was called. - call.assert_called() - _, args, _ = call.mock_calls[0] - request_msg = cloud_redis_cluster.BackupClusterRequest() - assert args[0] == request_msg + # Designate an appropriate value for the returned response. + return_value = operations_pb2.Operation(name="operations/spam") + # 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 + json_return_value = json_format.MessageToJson(return_value) -def test_transport_kind_grpc_asyncio(): - transport = CloudRedisClusterAsyncClient.get_transport_class("grpc_asyncio")( - credentials=async_anonymous_credentials() - ) - assert transport.kind == "grpc_asyncio" + response_value._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_cluster(request) -def test_initialize_client_w_grpc_asyncio(): - client = CloudRedisClusterAsyncClient( - credentials=async_anonymous_credentials(), transport="grpc_asyncio" - ) - assert client is not None + expected_params = [ + ( + "clusterId", + "", + ), + ("$alt", "json;enum-encoding=int"), + ] + actual_params = req.call_args.kwargs["params"] + assert sorted(expected_params) == sorted(actual_params) -# 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_clusters_empty_call_grpc_asyncio(): - client = CloudRedisClusterAsyncClient( - credentials=async_anonymous_credentials(), - transport="grpc_asyncio", +def test_create_cluster_rest_flattened(): + client = CloudRedisClusterClient( + credentials=ga_credentials.AnonymousCredentials(), + transport="rest", ) - # Mock the actual call, and fake the request. - with mock.patch.object(type(client.transport.list_clusters), "__call__") as call: - # Designate an appropriate return value for the call. - call.return_value = grpc_helpers_async.FakeUnaryUnaryCall( - cloud_redis_cluster.ListClustersResponse( - next_page_token="next_page_token_value", - unreachable=["unreachable_value"], - ) - ) - await client.list_clusters(request=None) + # 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 = operations_pb2.Operation(name="operations/spam") - # Establish that the underlying stub method was called. - call.assert_called() - _, args, _ = call.mock_calls[0] - request_msg = cloud_redis_cluster.ListClustersRequest() - assert args[0] == request_msg + # 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", + cluster=cloud_redis_cluster.Cluster( + gcs_source=cloud_redis_cluster.Cluster.GcsBackupSource( + uris=["uris_value"] + ) + ), + cluster_id="cluster_id_value", + ) + mock_args.update(sample_request) -# 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_acl_policies_empty_call_grpc_asyncio(): - client = CloudRedisClusterAsyncClient( - credentials=async_anonymous_credentials(), - transport="grpc_asyncio", - ) + # Wrap the value into a proper Response obj + response_value = Response() + 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"} - # Mock the actual call, and fake the request. - with mock.patch.object( - type(client.transport.list_acl_policies), "__call__" - ) as call: - # Designate an appropriate return value for the call. - call.return_value = grpc_helpers_async.FakeUnaryUnaryCall( - cloud_redis_cluster.ListAclPoliciesResponse( - next_page_token="next_page_token_value", - unreachable=["unreachable_value"], - ) - ) - await client.list_acl_policies(request=None) + client.create_cluster(**mock_args) - # Establish that the underlying stub method was called. - call.assert_called() - _, args, _ = call.mock_calls[0] - request_msg = cloud_redis_cluster.ListAclPoliciesRequest() - assert args[0] == request_msg + # 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/v1beta1/{parent=projects/*/locations/*}/clusters" + % client.transport._host, + args[1], + ) -# 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_cluster_empty_call_grpc_asyncio(): - client = CloudRedisClusterAsyncClient( - credentials=async_anonymous_credentials(), - transport="grpc_asyncio", +def test_create_cluster_rest_flattened_error(transport: str = "rest"): + client = CloudRedisClusterClient( + credentials=ga_credentials.AnonymousCredentials(), + transport=transport, ) - # Mock the actual call, and fake the request. - with mock.patch.object(type(client.transport.get_cluster), "__call__") as call: - # Designate an appropriate return value for the call. - call.return_value = grpc_helpers_async.FakeUnaryUnaryCall( - cloud_redis_cluster.Cluster( - name="name_value", - state=cloud_redis_cluster.Cluster.State.CREATING, - uid="uid_value", - replica_count=1384, - authorization_mode=cloud_redis_cluster.AuthorizationMode.AUTH_MODE_IAM_AUTH, - transit_encryption_mode=cloud_redis_cluster.TransitEncryptionMode.TRANSIT_ENCRYPTION_MODE_DISABLED, - size_gb=739, - shard_count=1178, - node_type=cloud_redis_cluster.NodeType.REDIS_SHARED_CORE_NANO, - precise_size_gb=0.15810000000000002, - deletion_protection_enabled=True, - backup_collection="backup_collection_value", - kms_key="kms_key_value", - async_cluster_endpoints_deletion_enabled=True, - server_ca_mode=cloud_redis_cluster.ServerCaMode.SERVER_CA_MODE_GOOGLE_MANAGED_PER_INSTANCE_CA, - server_ca_pool="server_ca_pool_value", - rotate_server_certificate=True, - acl_policy="acl_policy_value", - ) + # Attempting to call a method with both a request object and flattened + # fields is an error. + with pytest.raises(ValueError): + client.create_cluster( + cloud_redis_cluster.CreateClusterRequest(), + parent="parent_value", + cluster=cloud_redis_cluster.Cluster( + gcs_source=cloud_redis_cluster.Cluster.GcsBackupSource( + uris=["uris_value"] + ) + ), + cluster_id="cluster_id_value", ) - await client.get_cluster(request=None) - # Establish that the underlying stub method was called. - call.assert_called() - _, args, _ = call.mock_calls[0] - request_msg = cloud_redis_cluster.GetClusterRequest() - assert args[0] == request_msg +def test_create_acl_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 = CloudRedisClusterClient( + credentials=ga_credentials.AnonymousCredentials(), + transport="rest", + ) -# 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_acl_policy_empty_call_grpc_asyncio(): - client = CloudRedisClusterAsyncClient( - credentials=async_anonymous_credentials(), - transport="grpc_asyncio", - ) + # Should wrap all calls on client creation + assert wrapper_fn.call_count > 0 + wrapper_fn.reset_mock() - # Mock the actual call, and fake the request. - with mock.patch.object(type(client.transport.get_acl_policy), "__call__") as call: - # Designate an appropriate return value for the call. - call.return_value = grpc_helpers_async.FakeUnaryUnaryCall( - cloud_redis_cluster.AclPolicy( - name="name_value", - state=cloud_redis_cluster.AclPolicy.State.ACTIVE, - etag="etag_value", - ) + # Ensure method has been cached + assert client._transport.create_acl_policy in client._transport._wrapped_methods + + # Replace cached wrapped function with mock + mock_rpc = mock.Mock() + mock_rpc.return_value.name = ( + "foo" # operation_request.operation in compute client(s) expect a string. + ) + client._transport._wrapped_methods[client._transport.create_acl_policy] = ( + mock_rpc ) - await client.get_acl_policy(request=None) - # Establish that the underlying stub method was called. - call.assert_called() - _, args, _ = call.mock_calls[0] - request_msg = cloud_redis_cluster.GetAclPolicyRequest() - assert args[0] == request_msg + request = {} + client.create_acl_policy(request) + # Establish that the underlying gRPC stub method was called. + assert mock_rpc.call_count == 1 -# 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_cluster_empty_call_grpc_asyncio(): - client = CloudRedisClusterAsyncClient( - credentials=async_anonymous_credentials(), - transport="grpc_asyncio", - ) + client.create_acl_policy(request) - # Mock the actual call, and fake the request. - with mock.patch.object(type(client.transport.update_cluster), "__call__") as call: - # Designate an appropriate return value for the call. - call.return_value = grpc_helpers_async.FakeUnaryUnaryCall( - operations_pb2.Operation(name="operations/spam") - ) - await client.update_cluster(request=None) + # Establish that a new wrapper was not created for this call + assert wrapper_fn.call_count == 0 + assert mock_rpc.call_count == 2 - # Establish that the underlying stub method was called. - call.assert_called() - _, args, _ = call.mock_calls[0] - request_msg = cloud_redis_cluster.UpdateClusterRequest() - assert args[0] == request_msg +def test_create_acl_policy_rest_required_fields( + request_type=cloud_redis_cluster.CreateAclPolicyRequest, +): + transport_class = transports.CloudRedisClusterRestTransport -# 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_acl_policy_empty_call_grpc_asyncio(): - client = CloudRedisClusterAsyncClient( - credentials=async_anonymous_credentials(), - transport="grpc_asyncio", + request_init = {} + request_init["parent"] = "" + request_init["acl_policy_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) ) - # Mock the actual call, and fake the request. - with mock.patch.object( - type(client.transport.update_acl_policy), "__call__" - ) as call: - # Designate an appropriate return value for the call. - call.return_value = grpc_helpers_async.FakeUnaryUnaryCall( - operations_pb2.Operation(name="operations/spam") - ) - await client.update_acl_policy(request=None) + # verify fields with default values are dropped + assert "aclPolicyId" not in jsonified_request - # Establish that the underlying stub method was called. - call.assert_called() - _, args, _ = call.mock_calls[0] - request_msg = cloud_redis_cluster.UpdateAclPolicyRequest() - assert args[0] == request_msg + default_values = getattr( + transport_class._BaseCreateAclPolicy, + "_BaseCreateAclPolicy__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 + assert "aclPolicyId" in jsonified_request + assert jsonified_request["aclPolicyId"] == request_init["acl_policy_id"] -# 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_cluster_empty_call_grpc_asyncio(): - client = CloudRedisClusterAsyncClient( - credentials=async_anonymous_credentials(), - transport="grpc_asyncio", - ) + jsonified_request["parent"] = "parent_value" + jsonified_request["aclPolicyId"] = "acl_policy_id_value" - # Mock the actual call, and fake the request. - with mock.patch.object(type(client.transport.delete_cluster), "__call__") as call: - # Designate an appropriate return value for the call. - call.return_value = grpc_helpers_async.FakeUnaryUnaryCall( - operations_pb2.Operation(name="operations/spam") + # Check that path parameters and body parameters are not mixing in. + assert not set(unset_fields) - set( + ( + "aclPolicyId", + "requestId", ) - await client.delete_cluster(request=None) + ) - # Establish that the underlying stub method was called. - call.assert_called() - _, args, _ = call.mock_calls[0] - request_msg = cloud_redis_cluster.DeleteClusterRequest() - assert args[0] == request_msg + # verify required fields with non-default values are left alone + assert "parent" in jsonified_request + assert jsonified_request["parent"] == "parent_value" + assert "aclPolicyId" in jsonified_request + assert jsonified_request["aclPolicyId"] == "acl_policy_id_value" - -# 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_acl_policy_empty_call_grpc_asyncio(): - client = CloudRedisClusterAsyncClient( - credentials=async_anonymous_credentials(), - transport="grpc_asyncio", + client = CloudRedisClusterClient( + credentials=ga_credentials.AnonymousCredentials(), + transport="rest", ) + request = request_type(**request_init) - # Mock the actual call, and fake the request. - with mock.patch.object( - type(client.transport.delete_acl_policy), "__call__" - ) as call: - # Designate an appropriate return value for the call. - call.return_value = grpc_helpers_async.FakeUnaryUnaryCall( - operations_pb2.Operation(name="operations/spam") - ) - await client.delete_acl_policy(request=None) + # Designate an appropriate value for the returned response. + return_value = cloud_redis_cluster.AclPolicy() + # 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 - # Establish that the underlying stub method was called. - call.assert_called() - _, args, _ = call.mock_calls[0] - request_msg = cloud_redis_cluster.DeleteAclPolicyRequest() - assert args[0] == request_msg + response_value = Response() + response_value.status_code = 200 + # Convert return value to protobuf type + return_value = cloud_redis_cluster.AclPolicy.pb(return_value) + json_return_value = json_format.MessageToJson(return_value) -# 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_acl_policy_revision_empty_call_grpc_asyncio(): - client = CloudRedisClusterAsyncClient( - credentials=async_anonymous_credentials(), - transport="grpc_asyncio", - ) + response_value._content = json_return_value.encode("UTF-8") + req.return_value = response_value + req.return_value.headers = {"header-1": "value-1", "header-2": "value-2"} - # Mock the actual call, and fake the request. - with mock.patch.object( - type(client.transport.get_acl_policy_revision), "__call__" - ) as call: - # Designate an appropriate return value for the call. - call.return_value = grpc_helpers_async.FakeUnaryUnaryCall( - cloud_redis_cluster.AclPolicyRevision( - name="name_value", - revision_number=1623, - attached_clusters=["attached_clusters_value"], - ) - ) - await client.get_acl_policy_revision(request=None) + response = client.create_acl_policy(request) - # Establish that the underlying stub method was called. - call.assert_called() - _, args, _ = call.mock_calls[0] - request_msg = cloud_redis_cluster.GetAclPolicyRevisionRequest() - assert args[0] == request_msg + expected_params = [ + ( + "aclPolicyId", + "", + ), + ("$alt", "json;enum-encoding=int"), + ] + actual_params = req.call_args.kwargs["params"] + assert sorted(expected_params) == sorted(actual_params) -# 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_acl_policy_revisions_empty_call_grpc_asyncio(): - client = CloudRedisClusterAsyncClient( - credentials=async_anonymous_credentials(), - transport="grpc_asyncio", +def test_create_acl_policy_rest_flattened(): + client = CloudRedisClusterClient( + credentials=ga_credentials.AnonymousCredentials(), + transport="rest", ) - # Mock the actual call, and fake the request. - with mock.patch.object( - type(client.transport.list_acl_policy_revisions), "__call__" - ) as call: - # Designate an appropriate return value for the call. - call.return_value = grpc_helpers_async.FakeUnaryUnaryCall( - cloud_redis_cluster.ListAclPolicyRevisionsResponse( - next_page_token="next_page_token_value", - unreachable=["unreachable_value"], - ) - ) - await client.list_acl_policy_revisions(request=None) + # 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 = cloud_redis_cluster.AclPolicy() - # Establish that the underlying stub method was called. - call.assert_called() - _, args, _ = call.mock_calls[0] - request_msg = cloud_redis_cluster.ListAclPolicyRevisionsRequest() - assert args[0] == request_msg + # 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", + acl_policy=cloud_redis_cluster.AclPolicy(name="name_value"), + acl_policy_id="acl_policy_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 = cloud_redis_cluster.AclPolicy.pb(return_value) + json_return_value = json_format.MessageToJson(return_value) + response_value._content = json_return_value.encode("UTF-8") + req.return_value = response_value + req.return_value.headers = {"header-1": "value-1", "header-2": "value-2"} -# 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_cluster_empty_call_grpc_asyncio(): - client = CloudRedisClusterAsyncClient( - credentials=async_anonymous_credentials(), - transport="grpc_asyncio", - ) + client.create_acl_policy(**mock_args) - # Mock the actual call, and fake the request. - with mock.patch.object(type(client.transport.create_cluster), "__call__") as call: - # Designate an appropriate return value for the call. - call.return_value = grpc_helpers_async.FakeUnaryUnaryCall( - operations_pb2.Operation(name="operations/spam") + # 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/v1beta1/{parent=projects/*/locations/*}/aclPolicies" + % client.transport._host, + args[1], ) - await client.create_cluster(request=None) - - # Establish that the underlying stub method was called. - call.assert_called() - _, args, _ = call.mock_calls[0] - request_msg = cloud_redis_cluster.CreateClusterRequest() - 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_create_acl_policy_empty_call_grpc_asyncio(): - client = CloudRedisClusterAsyncClient( - credentials=async_anonymous_credentials(), - transport="grpc_asyncio", +def test_create_acl_policy_rest_flattened_error(transport: str = "rest"): + client = CloudRedisClusterClient( + credentials=ga_credentials.AnonymousCredentials(), + transport=transport, ) - # Mock the actual call, and fake the request. - with mock.patch.object( - type(client.transport.create_acl_policy), "__call__" - ) as call: - # Designate an appropriate return value for the call. - call.return_value = grpc_helpers_async.FakeUnaryUnaryCall( - cloud_redis_cluster.AclPolicy( - name="name_value", - state=cloud_redis_cluster.AclPolicy.State.ACTIVE, - etag="etag_value", - ) + # Attempting to call a method with both a request object and flattened + # fields is an error. + with pytest.raises(ValueError): + client.create_acl_policy( + cloud_redis_cluster.CreateAclPolicyRequest(), + parent="parent_value", + acl_policy=cloud_redis_cluster.AclPolicy(name="name_value"), + acl_policy_id="acl_policy_id_value", ) - await client.create_acl_policy(request=None) - # Establish that the underlying stub method was called. - call.assert_called() - _, args, _ = call.mock_calls[0] - request_msg = cloud_redis_cluster.CreateAclPolicyRequest() - assert args[0] == request_msg +def test_get_cluster_certificate_authority_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 = CloudRedisClusterClient( + credentials=ga_credentials.AnonymousCredentials(), + transport="rest", + ) -# 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_cluster_certificate_authority_empty_call_grpc_asyncio(): - client = CloudRedisClusterAsyncClient( - credentials=async_anonymous_credentials(), - transport="grpc_asyncio", - ) + # Should wrap all calls on client creation + assert wrapper_fn.call_count > 0 + wrapper_fn.reset_mock() - # Mock the actual call, and fake the request. - with mock.patch.object( - type(client.transport.get_cluster_certificate_authority), "__call__" - ) as call: - # Designate an appropriate return value for the call. - call.return_value = grpc_helpers_async.FakeUnaryUnaryCall( - cloud_redis_cluster.CertificateAuthority( - name="name_value", - ) + # Ensure method has been cached + assert ( + client._transport.get_cluster_certificate_authority + in client._transport._wrapped_methods ) - await client.get_cluster_certificate_authority(request=None) - # Establish that the underlying stub method was called. - call.assert_called() - _, args, _ = call.mock_calls[0] - request_msg = cloud_redis_cluster.GetClusterCertificateAuthorityRequest() - assert args[0] == request_msg + # 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_cluster_certificate_authority + ] = mock_rpc + request = {} + client.get_cluster_certificate_authority(request) -# 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_shared_regional_certificate_authority_empty_call_grpc_asyncio(): - client = CloudRedisClusterAsyncClient( - credentials=async_anonymous_credentials(), - transport="grpc_asyncio", - ) - - # Mock the actual call, and fake the request. - with mock.patch.object( - type(client.transport.get_shared_regional_certificate_authority), "__call__" - ) as call: - # Designate an appropriate return value for the call. - call.return_value = grpc_helpers_async.FakeUnaryUnaryCall( - cloud_redis_cluster.SharedRegionalCertificateAuthority( - name="name_value", - ) - ) - await client.get_shared_regional_certificate_authority(request=None) + # Establish that the underlying gRPC stub method was called. + assert mock_rpc.call_count == 1 - # Establish that the underlying stub method was called. - call.assert_called() - _, args, _ = call.mock_calls[0] - request_msg = cloud_redis_cluster.GetSharedRegionalCertificateAuthorityRequest() - assert args[0] == request_msg + client.get_cluster_certificate_authority(request) + # Establish that a new wrapper was not created for this call + assert wrapper_fn.call_count == 0 + assert mock_rpc.call_count == 2 -# 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_reschedule_cluster_maintenance_empty_call_grpc_asyncio(): - client = CloudRedisClusterAsyncClient( - credentials=async_anonymous_credentials(), - transport="grpc_asyncio", - ) - # Mock the actual call, and fake the request. - with mock.patch.object( - type(client.transport.reschedule_cluster_maintenance), "__call__" - ) as call: - # Designate an appropriate return value for the call. - call.return_value = grpc_helpers_async.FakeUnaryUnaryCall( - operations_pb2.Operation(name="operations/spam") - ) - await client.reschedule_cluster_maintenance(request=None) +def test_get_cluster_certificate_authority_rest_required_fields( + request_type=cloud_redis_cluster.GetClusterCertificateAuthorityRequest, +): + transport_class = transports.CloudRedisClusterRestTransport - # Establish that the underlying stub method was called. - call.assert_called() - _, args, _ = call.mock_calls[0] - request_msg = cloud_redis_cluster.RescheduleClusterMaintenanceRequest() - assert args[0] == request_msg + 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 -# 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_backup_collections_empty_call_grpc_asyncio(): - client = CloudRedisClusterAsyncClient( - credentials=async_anonymous_credentials(), - transport="grpc_asyncio", + default_values = getattr( + transport_class._BaseGetClusterCertificateAuthority, + "_BaseGetClusterCertificateAuthority__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) - # Mock the actual call, and fake the request. - with mock.patch.object( - type(client.transport.list_backup_collections), "__call__" - ) as call: - # Designate an appropriate return value for the call. - call.return_value = grpc_helpers_async.FakeUnaryUnaryCall( - cloud_redis_cluster.ListBackupCollectionsResponse( - next_page_token="next_page_token_value", - unreachable=["unreachable_value"], - ) - ) - await client.list_backup_collections(request=None) + # verify required fields with default values are now present - # Establish that the underlying stub method was called. - call.assert_called() - _, args, _ = call.mock_calls[0] - request_msg = cloud_redis_cluster.ListBackupCollectionsRequest() - assert args[0] == request_msg + 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" -# 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_backup_collection_empty_call_grpc_asyncio(): - client = CloudRedisClusterAsyncClient( - credentials=async_anonymous_credentials(), - transport="grpc_asyncio", + client = CloudRedisClusterClient( + credentials=ga_credentials.AnonymousCredentials(), + transport="rest", ) + request = request_type(**request_init) - # Mock the actual call, and fake the request. - with mock.patch.object( - type(client.transport.get_backup_collection), "__call__" - ) as call: - # Designate an appropriate return value for the call. - call.return_value = grpc_helpers_async.FakeUnaryUnaryCall( - cloud_redis_cluster.BackupCollection( - name="name_value", - cluster_uid="cluster_uid_value", - cluster="cluster_value", - kms_key="kms_key_value", - uid="uid_value", - ) - ) - await client.get_backup_collection(request=None) + # Designate an appropriate value for the returned response. + return_value = cloud_redis_cluster.CertificateAuthority() + # 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 - # Establish that the underlying stub method was called. - call.assert_called() - _, args, _ = call.mock_calls[0] - request_msg = cloud_redis_cluster.GetBackupCollectionRequest() - assert args[0] == request_msg + response_value = Response() + response_value.status_code = 200 + # Convert return value to protobuf type + return_value = cloud_redis_cluster.CertificateAuthority.pb(return_value) + json_return_value = json_format.MessageToJson(return_value) -# 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_backups_empty_call_grpc_asyncio(): - client = CloudRedisClusterAsyncClient( - credentials=async_anonymous_credentials(), - transport="grpc_asyncio", - ) + response_value._content = json_return_value.encode("UTF-8") + req.return_value = response_value + req.return_value.headers = {"header-1": "value-1", "header-2": "value-2"} - # Mock the actual call, and fake the request. - with mock.patch.object(type(client.transport.list_backups), "__call__") as call: - # Designate an appropriate return value for the call. - call.return_value = grpc_helpers_async.FakeUnaryUnaryCall( - cloud_redis_cluster.ListBackupsResponse( - next_page_token="next_page_token_value", - unreachable=["unreachable_value"], - ) - ) - await client.list_backups(request=None) + response = client.get_cluster_certificate_authority(request) - # Establish that the underlying stub method was called. - call.assert_called() - _, args, _ = call.mock_calls[0] - request_msg = cloud_redis_cluster.ListBackupsRequest() - assert args[0] == request_msg + expected_params = [("$alt", "json;enum-encoding=int")] + actual_params = req.call_args.kwargs["params"] + assert sorted(expected_params) == sorted(actual_params) -# 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_backup_empty_call_grpc_asyncio(): - client = CloudRedisClusterAsyncClient( - credentials=async_anonymous_credentials(), - transport="grpc_asyncio", +def test_get_cluster_certificate_authority_rest_flattened(): + client = CloudRedisClusterClient( + credentials=ga_credentials.AnonymousCredentials(), + transport="rest", ) - # Mock the actual call, and fake the request. - with mock.patch.object(type(client.transport.get_backup), "__call__") as call: - # Designate an appropriate return value for the call. - call.return_value = grpc_helpers_async.FakeUnaryUnaryCall( - cloud_redis_cluster.Backup( - name="name_value", - cluster="cluster_value", - cluster_uid="cluster_uid_value", - total_size_bytes=1732, - engine_version="engine_version_value", - node_type=cloud_redis_cluster.NodeType.REDIS_SHARED_CORE_NANO, - replica_count=1384, - shard_count=1178, - backup_type=cloud_redis_cluster.Backup.BackupType.ON_DEMAND, - state=cloud_redis_cluster.Backup.State.CREATING, - uid="uid_value", - ) - ) - await client.get_backup(request=None) + # 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 = cloud_redis_cluster.CertificateAuthority() - # Establish that the underlying stub method was called. - call.assert_called() - _, args, _ = call.mock_calls[0] - request_msg = cloud_redis_cluster.GetBackupRequest() - assert args[0] == request_msg + # get arguments that satisfy an http rule for this method + sample_request = { + "name": "projects/sample1/locations/sample2/clusters/sample3/certificateAuthority" + } + # get truthy value for each flattened field + mock_args = dict( + name="name_value", + ) + mock_args.update(sample_request) -# 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_backup_empty_call_grpc_asyncio(): - client = CloudRedisClusterAsyncClient( - credentials=async_anonymous_credentials(), - transport="grpc_asyncio", - ) + # Wrap the value into a proper Response obj + response_value = Response() + response_value.status_code = 200 + # Convert return value to protobuf type + return_value = cloud_redis_cluster.CertificateAuthority.pb(return_value) + json_return_value = json_format.MessageToJson(return_value) + response_value._content = json_return_value.encode("UTF-8") + req.return_value = response_value + req.return_value.headers = {"header-1": "value-1", "header-2": "value-2"} - # Mock the actual call, and fake the request. - with mock.patch.object(type(client.transport.delete_backup), "__call__") as call: - # Designate an appropriate return value for the call. - call.return_value = grpc_helpers_async.FakeUnaryUnaryCall( - operations_pb2.Operation(name="operations/spam") - ) - await client.delete_backup(request=None) + client.get_cluster_certificate_authority(**mock_args) - # Establish that the underlying stub method was called. - call.assert_called() + # 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/v1beta1/{name=projects/*/locations/*/clusters/*/certificateAuthority}" + % client.transport._host, + args[1], + ) + + +def test_get_cluster_certificate_authority_rest_flattened_error( + transport: str = "rest", +): + client = CloudRedisClusterClient( + 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_cluster_certificate_authority( + cloud_redis_cluster.GetClusterCertificateAuthorityRequest(), + name="name_value", + ) + + +def test_get_shared_regional_certificate_authority_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 = CloudRedisClusterClient( + 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_shared_regional_certificate_authority + 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_shared_regional_certificate_authority + ] = mock_rpc + + request = {} + client.get_shared_regional_certificate_authority(request) + + # Establish that the underlying gRPC stub method was called. + assert mock_rpc.call_count == 1 + + client.get_shared_regional_certificate_authority(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_shared_regional_certificate_authority_rest_required_fields( + request_type=cloud_redis_cluster.GetSharedRegionalCertificateAuthorityRequest, +): + transport_class = transports.CloudRedisClusterRestTransport + + 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._BaseGetSharedRegionalCertificateAuthority, + "_BaseGetSharedRegionalCertificateAuthority__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 = CloudRedisClusterClient( + credentials=ga_credentials.AnonymousCredentials(), + transport="rest", + ) + request = request_type(**request_init) + + # Designate an appropriate value for the returned response. + return_value = cloud_redis_cluster.SharedRegionalCertificateAuthority() + # 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 = cloud_redis_cluster.SharedRegionalCertificateAuthority.pb( + return_value + ) + json_return_value = json_format.MessageToJson(return_value) + + response_value._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_shared_regional_certificate_authority(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_shared_regional_certificate_authority_rest_flattened(): + client = CloudRedisClusterClient( + 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 = cloud_redis_cluster.SharedRegionalCertificateAuthority() + + # get arguments that satisfy an http rule for this method + sample_request = { + "name": "projects/sample1/locations/sample2/sharedRegionalCertificateAuthority" + } + + # 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 = cloud_redis_cluster.SharedRegionalCertificateAuthority.pb( + return_value + ) + json_return_value = json_format.MessageToJson(return_value) + response_value._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_shared_regional_certificate_authority(**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/v1beta1/{name=projects/*/locations/*/sharedRegionalCertificateAuthority}" + % client.transport._host, + args[1], + ) + + +def test_get_shared_regional_certificate_authority_rest_flattened_error( + transport: str = "rest", +): + client = CloudRedisClusterClient( + 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_shared_regional_certificate_authority( + cloud_redis_cluster.GetSharedRegionalCertificateAuthorityRequest(), + name="name_value", + ) + + +def test_reschedule_cluster_maintenance_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 = CloudRedisClusterClient( + 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.reschedule_cluster_maintenance + 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.reschedule_cluster_maintenance + ] = mock_rpc + + request = {} + client.reschedule_cluster_maintenance(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.reschedule_cluster_maintenance(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_reschedule_cluster_maintenance_rest_required_fields( + request_type=cloud_redis_cluster.RescheduleClusterMaintenanceRequest, +): + transport_class = transports.CloudRedisClusterRestTransport + + 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._BaseRescheduleClusterMaintenance, + "_BaseRescheduleClusterMaintenance__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 = CloudRedisClusterClient( + credentials=ga_credentials.AnonymousCredentials(), + transport="rest", + ) + request = request_type(**request_init) + + # Designate an appropriate value for the returned response. + return_value = operations_pb2.Operation(name="operations/spam") + # 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 + json_return_value = json_format.MessageToJson(return_value) + + response_value._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.reschedule_cluster_maintenance(request) + + expected_params = [("$alt", "json;enum-encoding=int")] + actual_params = req.call_args.kwargs["params"] + assert sorted(expected_params) == sorted(actual_params) + + +def test_reschedule_cluster_maintenance_rest_flattened(): + client = CloudRedisClusterClient( + 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 = operations_pb2.Operation(name="operations/spam") + + # get arguments that satisfy an http rule for this method + sample_request = {"name": "projects/sample1/locations/sample2/clusters/sample3"} + + # get truthy value for each flattened field + mock_args = dict( + name="name_value", + reschedule_type=cloud_redis_cluster.RescheduleClusterMaintenanceRequest.RescheduleType.IMMEDIATE, + schedule_time=timestamp_pb2.Timestamp(seconds=751), + ) + mock_args.update(sample_request) + + # Wrap the value into a proper Response obj + response_value = Response() + 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"} + + client.reschedule_cluster_maintenance(**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/v1beta1/{name=projects/*/locations/*/clusters/*}:rescheduleClusterMaintenance" + % client.transport._host, + args[1], + ) + + +def test_reschedule_cluster_maintenance_rest_flattened_error(transport: str = "rest"): + client = CloudRedisClusterClient( + 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.reschedule_cluster_maintenance( + cloud_redis_cluster.RescheduleClusterMaintenanceRequest(), + name="name_value", + reschedule_type=cloud_redis_cluster.RescheduleClusterMaintenanceRequest.RescheduleType.IMMEDIATE, + schedule_time=timestamp_pb2.Timestamp(seconds=751), + ) + + +def test_list_backup_collections_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 = CloudRedisClusterClient( + 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_backup_collections + 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_backup_collections + ] = mock_rpc + + request = {} + client.list_backup_collections(request) + + # Establish that the underlying gRPC stub method was called. + assert mock_rpc.call_count == 1 + + client.list_backup_collections(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_backup_collections_rest_required_fields( + request_type=cloud_redis_cluster.ListBackupCollectionsRequest, +): + transport_class = transports.CloudRedisClusterRestTransport + + 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._BaseListBackupCollections, + "_BaseListBackupCollections__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 = CloudRedisClusterClient( + credentials=ga_credentials.AnonymousCredentials(), + transport="rest", + ) + request = request_type(**request_init) + + # Designate an appropriate value for the returned response. + return_value = cloud_redis_cluster.ListBackupCollectionsResponse() + # 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 = cloud_redis_cluster.ListBackupCollectionsResponse.pb( + return_value + ) + json_return_value = json_format.MessageToJson(return_value) + + response_value._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_backup_collections(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_backup_collections_rest_flattened(): + client = CloudRedisClusterClient( + 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 = cloud_redis_cluster.ListBackupCollectionsResponse() + + # 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 = cloud_redis_cluster.ListBackupCollectionsResponse.pb( + return_value + ) + json_return_value = json_format.MessageToJson(return_value) + response_value._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_backup_collections(**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/v1beta1/{parent=projects/*/locations/*}/backupCollections" + % client.transport._host, + args[1], + ) + + +def test_list_backup_collections_rest_flattened_error(transport: str = "rest"): + client = CloudRedisClusterClient( + 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_backup_collections( + cloud_redis_cluster.ListBackupCollectionsRequest(), + parent="parent_value", + ) + + +def test_list_backup_collections_rest_pager(transport: str = "rest"): + client = CloudRedisClusterClient( + 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 = ( + cloud_redis_cluster.ListBackupCollectionsResponse( + backup_collections=[ + cloud_redis_cluster.BackupCollection(), + cloud_redis_cluster.BackupCollection(), + cloud_redis_cluster.BackupCollection(), + ], + next_page_token="abc", + ), + cloud_redis_cluster.ListBackupCollectionsResponse( + backup_collections=[], + next_page_token="def", + ), + cloud_redis_cluster.ListBackupCollectionsResponse( + backup_collections=[ + cloud_redis_cluster.BackupCollection(), + ], + next_page_token="ghi", + ), + cloud_redis_cluster.ListBackupCollectionsResponse( + backup_collections=[ + cloud_redis_cluster.BackupCollection(), + cloud_redis_cluster.BackupCollection(), + ], + ), + ) + # Two responses for two calls + response = response + response + + # Wrap the values into proper Response objs + response = tuple( + cloud_redis_cluster.ListBackupCollectionsResponse.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_backup_collections(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, cloud_redis_cluster.BackupCollection) for i in results) + + pages = list(client.list_backup_collections(request=sample_request).pages) + for page_, token in zip(pages, ["abc", "def", "ghi", ""]): + assert page_.raw_page.next_page_token == token + + +def test_get_backup_collection_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 = CloudRedisClusterClient( + 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_backup_collection + 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_backup_collection] = ( + mock_rpc + ) + + request = {} + client.get_backup_collection(request) + + # Establish that the underlying gRPC stub method was called. + assert mock_rpc.call_count == 1 + + client.get_backup_collection(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_backup_collection_rest_required_fields( + request_type=cloud_redis_cluster.GetBackupCollectionRequest, +): + transport_class = transports.CloudRedisClusterRestTransport + + 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._BaseGetBackupCollection, + "_BaseGetBackupCollection__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 = CloudRedisClusterClient( + credentials=ga_credentials.AnonymousCredentials(), + transport="rest", + ) + request = request_type(**request_init) + + # Designate an appropriate value for the returned response. + return_value = cloud_redis_cluster.BackupCollection() + # 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 = cloud_redis_cluster.BackupCollection.pb(return_value) + json_return_value = json_format.MessageToJson(return_value) + + response_value._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_backup_collection(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_backup_collection_rest_flattened(): + client = CloudRedisClusterClient( + 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 = cloud_redis_cluster.BackupCollection() + + # get arguments that satisfy an http rule for this method + sample_request = { + "name": "projects/sample1/locations/sample2/backupCollections/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 = cloud_redis_cluster.BackupCollection.pb(return_value) + json_return_value = json_format.MessageToJson(return_value) + response_value._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_backup_collection(**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/v1beta1/{name=projects/*/locations/*/backupCollections/*}" + % client.transport._host, + args[1], + ) + + +def test_get_backup_collection_rest_flattened_error(transport: str = "rest"): + client = CloudRedisClusterClient( + 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_backup_collection( + cloud_redis_cluster.GetBackupCollectionRequest(), + name="name_value", + ) + + +def test_list_backups_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 = CloudRedisClusterClient( + 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_backups 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_backups] = mock_rpc + + request = {} + client.list_backups(request) + + # Establish that the underlying gRPC stub method was called. + assert mock_rpc.call_count == 1 + + client.list_backups(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_backups_rest_required_fields( + request_type=cloud_redis_cluster.ListBackupsRequest, +): + transport_class = transports.CloudRedisClusterRestTransport + + 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._BaseListBackups, + "_BaseListBackups__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 = CloudRedisClusterClient( + credentials=ga_credentials.AnonymousCredentials(), + transport="rest", + ) + request = request_type(**request_init) + + # Designate an appropriate value for the returned response. + return_value = cloud_redis_cluster.ListBackupsResponse() + # 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 = cloud_redis_cluster.ListBackupsResponse.pb(return_value) + json_return_value = json_format.MessageToJson(return_value) + + response_value._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_backups(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_backups_rest_flattened(): + client = CloudRedisClusterClient( + 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 = cloud_redis_cluster.ListBackupsResponse() + + # get arguments that satisfy an http rule for this method + sample_request = { + "parent": "projects/sample1/locations/sample2/backupCollections/sample3" + } + + # 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 = cloud_redis_cluster.ListBackupsResponse.pb(return_value) + json_return_value = json_format.MessageToJson(return_value) + response_value._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_backups(**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/v1beta1/{parent=projects/*/locations/*/backupCollections/*}/backups" + % client.transport._host, + args[1], + ) + + +def test_list_backups_rest_flattened_error(transport: str = "rest"): + client = CloudRedisClusterClient( + 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_backups( + cloud_redis_cluster.ListBackupsRequest(), + parent="parent_value", + ) + + +def test_list_backups_rest_pager(transport: str = "rest"): + client = CloudRedisClusterClient( + 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 = ( + cloud_redis_cluster.ListBackupsResponse( + backups=[ + cloud_redis_cluster.Backup(), + cloud_redis_cluster.Backup(), + cloud_redis_cluster.Backup(), + ], + next_page_token="abc", + ), + cloud_redis_cluster.ListBackupsResponse( + backups=[], + next_page_token="def", + ), + cloud_redis_cluster.ListBackupsResponse( + backups=[ + cloud_redis_cluster.Backup(), + ], + next_page_token="ghi", + ), + cloud_redis_cluster.ListBackupsResponse( + backups=[ + cloud_redis_cluster.Backup(), + cloud_redis_cluster.Backup(), + ], + ), + ) + # Two responses for two calls + response = response + response + + # Wrap the values into proper Response objs + response = tuple( + cloud_redis_cluster.ListBackupsResponse.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/backupCollections/sample3" + } + + pager = client.list_backups(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, cloud_redis_cluster.Backup) for i in results) + + pages = list(client.list_backups(request=sample_request).pages) + for page_, token in zip(pages, ["abc", "def", "ghi", ""]): + assert page_.raw_page.next_page_token == token + + +def test_get_backup_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 = CloudRedisClusterClient( + 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_backup 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_backup] = mock_rpc + + request = {} + client.get_backup(request) + + # Establish that the underlying gRPC stub method was called. + assert mock_rpc.call_count == 1 + + client.get_backup(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_backup_rest_required_fields( + request_type=cloud_redis_cluster.GetBackupRequest, +): + transport_class = transports.CloudRedisClusterRestTransport + + 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._BaseGetBackup, + "_BaseGetBackup__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 = CloudRedisClusterClient( + credentials=ga_credentials.AnonymousCredentials(), + transport="rest", + ) + request = request_type(**request_init) + + # Designate an appropriate value for the returned response. + return_value = cloud_redis_cluster.Backup() + # 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 = cloud_redis_cluster.Backup.pb(return_value) + json_return_value = json_format.MessageToJson(return_value) + + response_value._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_backup(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_backup_rest_flattened(): + client = CloudRedisClusterClient( + 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 = cloud_redis_cluster.Backup() + + # get arguments that satisfy an http rule for this method + sample_request = { + "name": "projects/sample1/locations/sample2/backupCollections/sample3/backups/sample4" + } + + # 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 = cloud_redis_cluster.Backup.pb(return_value) + json_return_value = json_format.MessageToJson(return_value) + response_value._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_backup(**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/v1beta1/{name=projects/*/locations/*/backupCollections/*/backups/*}" + % client.transport._host, + args[1], + ) + + +def test_get_backup_rest_flattened_error(transport: str = "rest"): + client = CloudRedisClusterClient( + 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_backup( + cloud_redis_cluster.GetBackupRequest(), + name="name_value", + ) + + +def test_delete_backup_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 = CloudRedisClusterClient( + 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_backup 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_backup] = mock_rpc + + request = {} + client.delete_backup(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_backup(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_backup_rest_required_fields( + request_type=cloud_redis_cluster.DeleteBackupRequest, +): + transport_class = transports.CloudRedisClusterRestTransport + + 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._BaseDeleteBackup, + "_BaseDeleteBackup__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" + + # 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 "name" in jsonified_request + assert jsonified_request["name"] == "name_value" + + client = CloudRedisClusterClient( + credentials=ga_credentials.AnonymousCredentials(), + transport="rest", + ) + request = request_type(**request_init) + + # Designate an appropriate value for the returned response. + return_value = operations_pb2.Operation(name="operations/spam") + # 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 = json_format.MessageToJson(return_value) + + response_value._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_backup(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_backup_rest_flattened(): + client = CloudRedisClusterClient( + 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 = operations_pb2.Operation(name="operations/spam") + + # get arguments that satisfy an http rule for this method + sample_request = { + "name": "projects/sample1/locations/sample2/backupCollections/sample3/backups/sample4" + } + + # 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 = json_format.MessageToJson(return_value) + response_value._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_backup(**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/v1beta1/{name=projects/*/locations/*/backupCollections/*/backups/*}" + % client.transport._host, + args[1], + ) + + +def test_delete_backup_rest_flattened_error(transport: str = "rest"): + client = CloudRedisClusterClient( + 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_backup( + cloud_redis_cluster.DeleteBackupRequest(), + name="name_value", + ) + + +def test_export_backup_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 = CloudRedisClusterClient( + 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.export_backup 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.export_backup] = mock_rpc + + request = {} + client.export_backup(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.export_backup(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_export_backup_rest_required_fields( + request_type=cloud_redis_cluster.ExportBackupRequest, +): + transport_class = transports.CloudRedisClusterRestTransport + + 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._BaseExportBackup, + "_BaseExportBackup__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 = CloudRedisClusterClient( + credentials=ga_credentials.AnonymousCredentials(), + transport="rest", + ) + request = request_type(**request_init) + + # Designate an appropriate value for the returned response. + return_value = operations_pb2.Operation(name="operations/spam") + # 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 + json_return_value = json_format.MessageToJson(return_value) + + response_value._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.export_backup(request) + + expected_params = [("$alt", "json;enum-encoding=int")] + actual_params = req.call_args.kwargs["params"] + assert sorted(expected_params) == sorted(actual_params) + + +def test_backup_cluster_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 = CloudRedisClusterClient( + 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.backup_cluster 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.backup_cluster] = mock_rpc + + request = {} + client.backup_cluster(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.backup_cluster(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_backup_cluster_rest_required_fields( + request_type=cloud_redis_cluster.BackupClusterRequest, +): + transport_class = transports.CloudRedisClusterRestTransport + + 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._BaseBackupCluster, + "_BaseBackupCluster__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 = CloudRedisClusterClient( + credentials=ga_credentials.AnonymousCredentials(), + transport="rest", + ) + request = request_type(**request_init) + + # Designate an appropriate value for the returned response. + return_value = operations_pb2.Operation(name="operations/spam") + # 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 + json_return_value = json_format.MessageToJson(return_value) + + response_value._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.backup_cluster(request) + + expected_params = [("$alt", "json;enum-encoding=int")] + actual_params = req.call_args.kwargs["params"] + assert sorted(expected_params) == sorted(actual_params) + + +def test_backup_cluster_rest_flattened(): + client = CloudRedisClusterClient( + 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 = operations_pb2.Operation(name="operations/spam") + + # get arguments that satisfy an http rule for this method + sample_request = {"name": "projects/sample1/locations/sample2/clusters/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 = json_format.MessageToJson(return_value) + response_value._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.backup_cluster(**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/v1beta1/{name=projects/*/locations/*/clusters/*}:backup" + % client.transport._host, + args[1], + ) + + +def test_backup_cluster_rest_flattened_error(transport: str = "rest"): + client = CloudRedisClusterClient( + 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.backup_cluster( + cloud_redis_cluster.BackupClusterRequest(), + name="name_value", + ) + + +def test_list_token_auth_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: + client = CloudRedisClusterClient( + 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_token_auth_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.list_token_auth_users] = ( + mock_rpc + ) + + request = {} + client.list_token_auth_users(request) + + # Establish that the underlying gRPC stub method was called. + assert mock_rpc.call_count == 1 + + client.list_token_auth_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_list_token_auth_users_rest_required_fields( + request_type=cloud_redis_cluster.ListTokenAuthUsersRequest, +): + transport_class = transports.CloudRedisClusterRestTransport + + 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._BaseListTokenAuthUsers, + "_BaseListTokenAuthUsers__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( + ( + "filter", + "orderBy", + "pageSize", + "pageToken", + ) + ) + + # verify required fields with non-default values are left alone + assert "parent" in jsonified_request + assert jsonified_request["parent"] == "parent_value" + + client = CloudRedisClusterClient( + credentials=ga_credentials.AnonymousCredentials(), + transport="rest", + ) + request = request_type(**request_init) + + # Designate an appropriate value for the returned response. + return_value = cloud_redis_cluster.ListTokenAuthUsersResponse() + # 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 = cloud_redis_cluster.ListTokenAuthUsersResponse.pb( + return_value + ) + json_return_value = json_format.MessageToJson(return_value) + + response_value._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_token_auth_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_list_token_auth_users_rest_flattened(): + client = CloudRedisClusterClient( + 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 = cloud_redis_cluster.ListTokenAuthUsersResponse() + + # get arguments that satisfy an http rule for this method + sample_request = { + "parent": "projects/sample1/locations/sample2/clusters/sample3" + } + + # 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 = cloud_redis_cluster.ListTokenAuthUsersResponse.pb(return_value) + json_return_value = json_format.MessageToJson(return_value) + response_value._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_token_auth_users(**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/v1beta1/{parent=projects/*/locations/*/clusters/*}/tokenAuthUsers" + % client.transport._host, + args[1], + ) + + +def test_list_token_auth_users_rest_flattened_error(transport: str = "rest"): + client = CloudRedisClusterClient( + 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_token_auth_users( + cloud_redis_cluster.ListTokenAuthUsersRequest(), + parent="parent_value", + ) + + +def test_list_token_auth_users_rest_pager(transport: str = "rest"): + client = CloudRedisClusterClient( + 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 = ( + cloud_redis_cluster.ListTokenAuthUsersResponse( + token_auth_users=[ + cloud_redis_cluster.TokenAuthUser(), + cloud_redis_cluster.TokenAuthUser(), + cloud_redis_cluster.TokenAuthUser(), + ], + next_page_token="abc", + ), + cloud_redis_cluster.ListTokenAuthUsersResponse( + token_auth_users=[], + next_page_token="def", + ), + cloud_redis_cluster.ListTokenAuthUsersResponse( + token_auth_users=[ + cloud_redis_cluster.TokenAuthUser(), + ], + next_page_token="ghi", + ), + cloud_redis_cluster.ListTokenAuthUsersResponse( + token_auth_users=[ + cloud_redis_cluster.TokenAuthUser(), + cloud_redis_cluster.TokenAuthUser(), + ], + ), + ) + # Two responses for two calls + response = response + response + + # Wrap the values into proper Response objs + response = tuple( + cloud_redis_cluster.ListTokenAuthUsersResponse.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/clusters/sample3" + } + + pager = client.list_token_auth_users(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, cloud_redis_cluster.TokenAuthUser) for i in results) + + pages = list(client.list_token_auth_users(request=sample_request).pages) + for page_, token in zip(pages, ["abc", "def", "ghi", ""]): + assert page_.raw_page.next_page_token == token + + +def test_get_token_auth_user_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 = CloudRedisClusterClient( + 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_token_auth_user 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_token_auth_user] = ( + mock_rpc + ) + + request = {} + client.get_token_auth_user(request) + + # Establish that the underlying gRPC stub method was called. + assert mock_rpc.call_count == 1 + + client.get_token_auth_user(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_token_auth_user_rest_required_fields( + request_type=cloud_redis_cluster.GetTokenAuthUserRequest, +): + transport_class = transports.CloudRedisClusterRestTransport + + 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._BaseGetTokenAuthUser, + "_BaseGetTokenAuthUser__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 = CloudRedisClusterClient( + credentials=ga_credentials.AnonymousCredentials(), + transport="rest", + ) + request = request_type(**request_init) + + # Designate an appropriate value for the returned response. + return_value = cloud_redis_cluster.TokenAuthUser() + # 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 = cloud_redis_cluster.TokenAuthUser.pb(return_value) + json_return_value = json_format.MessageToJson(return_value) + + response_value._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_token_auth_user(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_token_auth_user_rest_flattened(): + client = CloudRedisClusterClient( + 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 = cloud_redis_cluster.TokenAuthUser() + + # get arguments that satisfy an http rule for this method + sample_request = { + "name": "projects/sample1/locations/sample2/clusters/sample3/tokenAuthUsers/sample4" + } + + # 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 = cloud_redis_cluster.TokenAuthUser.pb(return_value) + json_return_value = json_format.MessageToJson(return_value) + response_value._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_token_auth_user(**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/v1beta1/{name=projects/*/locations/*/clusters/*/tokenAuthUsers/*}" + % client.transport._host, + args[1], + ) + + +def test_get_token_auth_user_rest_flattened_error(transport: str = "rest"): + client = CloudRedisClusterClient( + 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_token_auth_user( + cloud_redis_cluster.GetTokenAuthUserRequest(), + name="name_value", + ) + + +def test_list_auth_tokens_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 = CloudRedisClusterClient( + 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_auth_tokens 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_auth_tokens] = ( + mock_rpc + ) + + request = {} + client.list_auth_tokens(request) + + # Establish that the underlying gRPC stub method was called. + assert mock_rpc.call_count == 1 + + client.list_auth_tokens(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_auth_tokens_rest_required_fields( + request_type=cloud_redis_cluster.ListAuthTokensRequest, +): + transport_class = transports.CloudRedisClusterRestTransport + + 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._BaseListAuthTokens, + "_BaseListAuthTokens__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( + ( + "filter", + "orderBy", + "pageSize", + "pageToken", + ) + ) + + # verify required fields with non-default values are left alone + assert "parent" in jsonified_request + assert jsonified_request["parent"] == "parent_value" + + client = CloudRedisClusterClient( + credentials=ga_credentials.AnonymousCredentials(), + transport="rest", + ) + request = request_type(**request_init) + + # Designate an appropriate value for the returned response. + return_value = cloud_redis_cluster.ListAuthTokensResponse() + # 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 = cloud_redis_cluster.ListAuthTokensResponse.pb(return_value) + json_return_value = json_format.MessageToJson(return_value) + + response_value._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_auth_tokens(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_auth_tokens_rest_flattened(): + client = CloudRedisClusterClient( + 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 = cloud_redis_cluster.ListAuthTokensResponse() + + # get arguments that satisfy an http rule for this method + sample_request = { + "parent": "projects/sample1/locations/sample2/clusters/sample3/tokenAuthUsers/sample4" + } + + # 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 = cloud_redis_cluster.ListAuthTokensResponse.pb(return_value) + json_return_value = json_format.MessageToJson(return_value) + response_value._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_auth_tokens(**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/v1beta1/{parent=projects/*/locations/*/clusters/*/tokenAuthUsers/*}/authTokens" + % client.transport._host, + args[1], + ) + + +def test_list_auth_tokens_rest_flattened_error(transport: str = "rest"): + client = CloudRedisClusterClient( + 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_auth_tokens( + cloud_redis_cluster.ListAuthTokensRequest(), + parent="parent_value", + ) + + +def test_list_auth_tokens_rest_pager(transport: str = "rest"): + client = CloudRedisClusterClient( + 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 = ( + cloud_redis_cluster.ListAuthTokensResponse( + auth_tokens=[ + cloud_redis_cluster.AuthToken(), + cloud_redis_cluster.AuthToken(), + cloud_redis_cluster.AuthToken(), + ], + next_page_token="abc", + ), + cloud_redis_cluster.ListAuthTokensResponse( + auth_tokens=[], + next_page_token="def", + ), + cloud_redis_cluster.ListAuthTokensResponse( + auth_tokens=[ + cloud_redis_cluster.AuthToken(), + ], + next_page_token="ghi", + ), + cloud_redis_cluster.ListAuthTokensResponse( + auth_tokens=[ + cloud_redis_cluster.AuthToken(), + cloud_redis_cluster.AuthToken(), + ], + ), + ) + # Two responses for two calls + response = response + response + + # Wrap the values into proper Response objs + response = tuple( + cloud_redis_cluster.ListAuthTokensResponse.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/clusters/sample3/tokenAuthUsers/sample4" + } + + pager = client.list_auth_tokens(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, cloud_redis_cluster.AuthToken) for i in results) + + pages = list(client.list_auth_tokens(request=sample_request).pages) + for page_, token in zip(pages, ["abc", "def", "ghi", ""]): + assert page_.raw_page.next_page_token == token + + +def test_get_auth_token_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 = CloudRedisClusterClient( + 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_auth_token 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_auth_token] = mock_rpc + + request = {} + client.get_auth_token(request) + + # Establish that the underlying gRPC stub method was called. + assert mock_rpc.call_count == 1 + + client.get_auth_token(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_auth_token_rest_required_fields( + request_type=cloud_redis_cluster.GetAuthTokenRequest, +): + transport_class = transports.CloudRedisClusterRestTransport + + 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._BaseGetAuthToken, + "_BaseGetAuthToken__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 = CloudRedisClusterClient( + credentials=ga_credentials.AnonymousCredentials(), + transport="rest", + ) + request = request_type(**request_init) + + # Designate an appropriate value for the returned response. + return_value = cloud_redis_cluster.AuthToken() + # 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 = cloud_redis_cluster.AuthToken.pb(return_value) + json_return_value = json_format.MessageToJson(return_value) + + response_value._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_auth_token(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_auth_token_rest_flattened(): + client = CloudRedisClusterClient( + 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 = cloud_redis_cluster.AuthToken() + + # get arguments that satisfy an http rule for this method + sample_request = { + "name": "projects/sample1/locations/sample2/clusters/sample3/tokenAuthUsers/sample4/authTokens/sample5" + } + + # 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 = cloud_redis_cluster.AuthToken.pb(return_value) + json_return_value = json_format.MessageToJson(return_value) + response_value._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_auth_token(**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/v1beta1/{name=projects/*/locations/*/clusters/*/tokenAuthUsers/*/authTokens/*}" + % client.transport._host, + args[1], + ) + + +def test_get_auth_token_rest_flattened_error(transport: str = "rest"): + client = CloudRedisClusterClient( + 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_auth_token( + cloud_redis_cluster.GetAuthTokenRequest(), + name="name_value", + ) + + +def test_add_token_auth_user_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 = CloudRedisClusterClient( + 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.add_token_auth_user 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.add_token_auth_user] = ( + mock_rpc + ) + + request = {} + client.add_token_auth_user(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.add_token_auth_user(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_add_token_auth_user_rest_required_fields( + request_type=cloud_redis_cluster.AddTokenAuthUserRequest, +): + transport_class = transports.CloudRedisClusterRestTransport + + request_init = {} + request_init["cluster"] = "" + request_init["token_auth_user"] = "" + 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._BaseAddTokenAuthUser, + "_BaseAddTokenAuthUser__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["cluster"] = "cluster_value" + jsonified_request["tokenAuthUser"] = "token_auth_user_value" + + # verify required fields with non-default values are left alone + assert "cluster" in jsonified_request + assert jsonified_request["cluster"] == "cluster_value" + assert "tokenAuthUser" in jsonified_request + assert jsonified_request["tokenAuthUser"] == "token_auth_user_value" + + client = CloudRedisClusterClient( + credentials=ga_credentials.AnonymousCredentials(), + transport="rest", + ) + request = request_type(**request_init) + + # Designate an appropriate value for the returned response. + return_value = operations_pb2.Operation(name="operations/spam") + # 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 + json_return_value = json_format.MessageToJson(return_value) + + response_value._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_token_auth_user(request) + + expected_params = [("$alt", "json;enum-encoding=int")] + actual_params = req.call_args.kwargs["params"] + assert sorted(expected_params) == sorted(actual_params) + + +def test_add_token_auth_user_rest_flattened(): + client = CloudRedisClusterClient( + 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 = operations_pb2.Operation(name="operations/spam") + + # get arguments that satisfy an http rule for this method + sample_request = { + "cluster": "projects/sample1/locations/sample2/clusters/sample3" + } + + # get truthy value for each flattened field + mock_args = dict( + cluster="cluster_value", + token_auth_user="token_auth_user_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 = json_format.MessageToJson(return_value) + response_value._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.add_token_auth_user(**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/v1beta1/{cluster=projects/*/locations/*/clusters/*}:addTokenAuthUser" + % client.transport._host, + args[1], + ) + + +def test_add_token_auth_user_rest_flattened_error(transport: str = "rest"): + client = CloudRedisClusterClient( + 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.add_token_auth_user( + cloud_redis_cluster.AddTokenAuthUserRequest(), + cluster="cluster_value", + token_auth_user="token_auth_user_value", + ) + + +def test_delete_token_auth_user_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 = CloudRedisClusterClient( + 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_token_auth_user + 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_token_auth_user] = ( + mock_rpc + ) + + request = {} + client.delete_token_auth_user(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_token_auth_user(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_token_auth_user_rest_required_fields( + request_type=cloud_redis_cluster.DeleteTokenAuthUserRequest, +): + transport_class = transports.CloudRedisClusterRestTransport + + 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._BaseDeleteTokenAuthUser, + "_BaseDeleteTokenAuthUser__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" + + # 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 "name" in jsonified_request + assert jsonified_request["name"] == "name_value" + + client = CloudRedisClusterClient( + credentials=ga_credentials.AnonymousCredentials(), + transport="rest", + ) + request = request_type(**request_init) + + # Designate an appropriate value for the returned response. + return_value = operations_pb2.Operation(name="operations/spam") + # 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 = json_format.MessageToJson(return_value) + + response_value._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_token_auth_user(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_token_auth_user_rest_flattened(): + client = CloudRedisClusterClient( + 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 = operations_pb2.Operation(name="operations/spam") + + # get arguments that satisfy an http rule for this method + sample_request = { + "name": "projects/sample1/locations/sample2/clusters/sample3/tokenAuthUsers/sample4" + } + + # 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 = json_format.MessageToJson(return_value) + response_value._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_token_auth_user(**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/v1beta1/{name=projects/*/locations/*/clusters/*/tokenAuthUsers/*}" + % client.transport._host, + args[1], + ) + + +def test_delete_token_auth_user_rest_flattened_error(transport: str = "rest"): + client = CloudRedisClusterClient( + 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_token_auth_user( + cloud_redis_cluster.DeleteTokenAuthUserRequest(), + name="name_value", + ) + + +def test_add_auth_token_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 = CloudRedisClusterClient( + 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.add_auth_token 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.add_auth_token] = mock_rpc + + request = {} + client.add_auth_token(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.add_auth_token(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_add_auth_token_rest_required_fields( + request_type=cloud_redis_cluster.AddAuthTokenRequest, +): + transport_class = transports.CloudRedisClusterRestTransport + + request_init = {} + request_init["token_auth_user"] = "" + 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._BaseAddAuthToken, + "_BaseAddAuthToken__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["tokenAuthUser"] = "token_auth_user_value" + + # verify required fields with non-default values are left alone + assert "tokenAuthUser" in jsonified_request + assert jsonified_request["tokenAuthUser"] == "token_auth_user_value" + + client = CloudRedisClusterClient( + credentials=ga_credentials.AnonymousCredentials(), + transport="rest", + ) + request = request_type(**request_init) + + # Designate an appropriate value for the returned response. + return_value = operations_pb2.Operation(name="operations/spam") + # 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 + json_return_value = json_format.MessageToJson(return_value) + + response_value._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_auth_token(request) + + expected_params = [("$alt", "json;enum-encoding=int")] + actual_params = req.call_args.kwargs["params"] + assert sorted(expected_params) == sorted(actual_params) + + +def test_add_auth_token_rest_flattened(): + client = CloudRedisClusterClient( + 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 = operations_pb2.Operation(name="operations/spam") + + # get arguments that satisfy an http rule for this method + sample_request = { + "token_auth_user": "projects/sample1/locations/sample2/clusters/sample3/tokenAuthUsers/sample4" + } + + # get truthy value for each flattened field + mock_args = dict( + token_auth_user="token_auth_user_value", + auth_token=cloud_redis_cluster.AuthToken(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 = json_format.MessageToJson(return_value) + response_value._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.add_auth_token(**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/v1beta1/{token_auth_user=projects/*/locations/*/clusters/*/tokenAuthUsers/*}:addAuthToken" + % client.transport._host, + args[1], + ) + + +def test_add_auth_token_rest_flattened_error(transport: str = "rest"): + client = CloudRedisClusterClient( + 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.add_auth_token( + cloud_redis_cluster.AddAuthTokenRequest(), + token_auth_user="token_auth_user_value", + auth_token=cloud_redis_cluster.AuthToken(name="name_value"), + ) + + +def test_delete_auth_token_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 = CloudRedisClusterClient( + 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_auth_token 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_auth_token] = ( + mock_rpc + ) + + request = {} + client.delete_auth_token(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_auth_token(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_auth_token_rest_required_fields( + request_type=cloud_redis_cluster.DeleteAuthTokenRequest, +): + transport_class = transports.CloudRedisClusterRestTransport + + 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._BaseDeleteAuthToken, + "_BaseDeleteAuthToken__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 = CloudRedisClusterClient( + credentials=ga_credentials.AnonymousCredentials(), + transport="rest", + ) + request = request_type(**request_init) + + # Designate an appropriate value for the returned response. + return_value = operations_pb2.Operation(name="operations/spam") + # 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 = json_format.MessageToJson(return_value) + + response_value._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_auth_token(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_auth_token_rest_flattened(): + client = CloudRedisClusterClient( + 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 = operations_pb2.Operation(name="operations/spam") + + # get arguments that satisfy an http rule for this method + sample_request = { + "name": "projects/sample1/locations/sample2/clusters/sample3/tokenAuthUsers/sample4/authTokens/sample5" + } + + # 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 = json_format.MessageToJson(return_value) + response_value._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_auth_token(**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/v1beta1/{name=projects/*/locations/*/clusters/*/tokenAuthUsers/*/authTokens/*}" + % client.transport._host, + args[1], + ) + + +def test_delete_auth_token_rest_flattened_error(transport: str = "rest"): + client = CloudRedisClusterClient( + 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_auth_token( + cloud_redis_cluster.DeleteAuthTokenRequest(), + name="name_value", + ) + + +def test_credentials_transport_error(): + # It is an error to provide credentials and a transport instance. + transport = transports.CloudRedisClusterGrpcTransport( + credentials=ga_credentials.AnonymousCredentials(), + ) + with pytest.raises(ValueError): + client = CloudRedisClusterClient( + credentials=ga_credentials.AnonymousCredentials(), + transport=transport, + ) + + # It is an error to provide a credentials file and a transport instance. + transport = transports.CloudRedisClusterGrpcTransport( + credentials=ga_credentials.AnonymousCredentials(), + ) + with pytest.raises(ValueError): + client = CloudRedisClusterClient( + client_options={"credentials_file": "credentials.json"}, + transport=transport, + ) + + # It is an error to provide an api_key and a transport instance. + transport = transports.CloudRedisClusterGrpcTransport( + credentials=ga_credentials.AnonymousCredentials(), + ) + options = client_options.ClientOptions() + options.api_key = "api_key" + with pytest.raises(ValueError): + client = CloudRedisClusterClient( + 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 = CloudRedisClusterClient( + client_options=options, credentials=ga_credentials.AnonymousCredentials() + ) + + # It is an error to provide scopes and a transport instance. + transport = transports.CloudRedisClusterGrpcTransport( + credentials=ga_credentials.AnonymousCredentials(), + ) + with pytest.raises(ValueError): + client = CloudRedisClusterClient( + client_options={"scopes": ["1", "2"]}, + transport=transport, + ) + + +def test_transport_instance(): + # A client may be instantiated with a custom transport instance. + transport = transports.CloudRedisClusterGrpcTransport( + credentials=ga_credentials.AnonymousCredentials(), + ) + client = CloudRedisClusterClient(transport=transport) + assert client.transport is transport + + +def test_transport_get_channel(): + # A client may be instantiated with a custom transport instance. + transport = transports.CloudRedisClusterGrpcTransport( + credentials=ga_credentials.AnonymousCredentials(), + ) + channel = transport.grpc_channel + assert channel + + transport = transports.CloudRedisClusterGrpcAsyncIOTransport( + credentials=ga_credentials.AnonymousCredentials(), + ) + channel = transport.grpc_channel + assert channel + + +@pytest.mark.parametrize( + "transport_class", + [ + transports.CloudRedisClusterGrpcTransport, + transports.CloudRedisClusterGrpcAsyncIOTransport, + transports.CloudRedisClusterRestTransport, + ], +) +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 = CloudRedisClusterClient.get_transport_class("grpc")( + credentials=ga_credentials.AnonymousCredentials() + ) + assert transport.kind == "grpc" + + +def test_initialize_client_w_grpc(): + client = CloudRedisClusterClient( + 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_list_clusters_empty_call_grpc(): + client = CloudRedisClusterClient( + credentials=ga_credentials.AnonymousCredentials(), + transport="grpc", + ) + + # Mock the actual call, and fake the request. + with mock.patch.object(type(client.transport.list_clusters), "__call__") as call: + call.return_value = cloud_redis_cluster.ListClustersResponse() + client.list_clusters(request=None) + + # Establish that the underlying stub method was called. + call.assert_called() + _, args, _ = call.mock_calls[0] + request_msg = cloud_redis_cluster.ListClustersRequest() + 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_acl_policies_empty_call_grpc(): + client = CloudRedisClusterClient( + credentials=ga_credentials.AnonymousCredentials(), + transport="grpc", + ) + + # Mock the actual call, and fake the request. + with mock.patch.object( + type(client.transport.list_acl_policies), "__call__" + ) as call: + call.return_value = cloud_redis_cluster.ListAclPoliciesResponse() + client.list_acl_policies(request=None) + + # Establish that the underlying stub method was called. + call.assert_called() + _, args, _ = call.mock_calls[0] + request_msg = cloud_redis_cluster.ListAclPoliciesRequest() + 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_cluster_empty_call_grpc(): + client = CloudRedisClusterClient( + credentials=ga_credentials.AnonymousCredentials(), + transport="grpc", + ) + + # Mock the actual call, and fake the request. + with mock.patch.object(type(client.transport.get_cluster), "__call__") as call: + call.return_value = cloud_redis_cluster.Cluster() + client.get_cluster(request=None) + + # Establish that the underlying stub method was called. + call.assert_called() + _, args, _ = call.mock_calls[0] + request_msg = cloud_redis_cluster.GetClusterRequest() + 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_acl_policy_empty_call_grpc(): + client = CloudRedisClusterClient( + credentials=ga_credentials.AnonymousCredentials(), + transport="grpc", + ) + + # Mock the actual call, and fake the request. + with mock.patch.object(type(client.transport.get_acl_policy), "__call__") as call: + call.return_value = cloud_redis_cluster.AclPolicy() + client.get_acl_policy(request=None) + + # Establish that the underlying stub method was called. + call.assert_called() + _, args, _ = call.mock_calls[0] + request_msg = cloud_redis_cluster.GetAclPolicyRequest() + 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_cluster_empty_call_grpc(): + client = CloudRedisClusterClient( + credentials=ga_credentials.AnonymousCredentials(), + transport="grpc", + ) + + # Mock the actual call, and fake the request. + with mock.patch.object(type(client.transport.update_cluster), "__call__") as call: + call.return_value = operations_pb2.Operation(name="operations/op") + client.update_cluster(request=None) + + # Establish that the underlying stub method was called. + call.assert_called() + _, args, _ = call.mock_calls[0] + request_msg = cloud_redis_cluster.UpdateClusterRequest() + 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_acl_policy_empty_call_grpc(): + client = CloudRedisClusterClient( + credentials=ga_credentials.AnonymousCredentials(), + transport="grpc", + ) + + # Mock the actual call, and fake the request. + with mock.patch.object( + type(client.transport.update_acl_policy), "__call__" + ) as call: + call.return_value = operations_pb2.Operation(name="operations/op") + client.update_acl_policy(request=None) + + # Establish that the underlying stub method was called. + call.assert_called() + _, args, _ = call.mock_calls[0] + request_msg = cloud_redis_cluster.UpdateAclPolicyRequest() + 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_cluster_empty_call_grpc(): + client = CloudRedisClusterClient( + credentials=ga_credentials.AnonymousCredentials(), + transport="grpc", + ) + + # Mock the actual call, and fake the request. + with mock.patch.object(type(client.transport.delete_cluster), "__call__") as call: + call.return_value = operations_pb2.Operation(name="operations/op") + client.delete_cluster(request=None) + + # Establish that the underlying stub method was called. + call.assert_called() + _, args, _ = call.mock_calls[0] + request_msg = cloud_redis_cluster.DeleteClusterRequest() + 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_acl_policy_empty_call_grpc(): + client = CloudRedisClusterClient( + credentials=ga_credentials.AnonymousCredentials(), + transport="grpc", + ) + + # Mock the actual call, and fake the request. + with mock.patch.object( + type(client.transport.delete_acl_policy), "__call__" + ) as call: + call.return_value = operations_pb2.Operation(name="operations/op") + client.delete_acl_policy(request=None) + + # Establish that the underlying stub method was called. + call.assert_called() + _, args, _ = call.mock_calls[0] + request_msg = cloud_redis_cluster.DeleteAclPolicyRequest() + 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_acl_policy_revision_empty_call_grpc(): + client = CloudRedisClusterClient( + credentials=ga_credentials.AnonymousCredentials(), + transport="grpc", + ) + + # Mock the actual call, and fake the request. + with mock.patch.object( + type(client.transport.get_acl_policy_revision), "__call__" + ) as call: + call.return_value = cloud_redis_cluster.AclPolicyRevision() + client.get_acl_policy_revision(request=None) + + # Establish that the underlying stub method was called. + call.assert_called() + _, args, _ = call.mock_calls[0] + request_msg = cloud_redis_cluster.GetAclPolicyRevisionRequest() + 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_acl_policy_revisions_empty_call_grpc(): + client = CloudRedisClusterClient( + credentials=ga_credentials.AnonymousCredentials(), + transport="grpc", + ) + + # Mock the actual call, and fake the request. + with mock.patch.object( + type(client.transport.list_acl_policy_revisions), "__call__" + ) as call: + call.return_value = cloud_redis_cluster.ListAclPolicyRevisionsResponse() + client.list_acl_policy_revisions(request=None) + + # Establish that the underlying stub method was called. + call.assert_called() + _, args, _ = call.mock_calls[0] + request_msg = cloud_redis_cluster.ListAclPolicyRevisionsRequest() + assert args[0] == request_msg + + +# This test is a coverage failsafe to make sure that totally empty calls, +# i.e. request == None and no flattened fields passed, work. +def test_create_cluster_empty_call_grpc(): + client = CloudRedisClusterClient( + credentials=ga_credentials.AnonymousCredentials(), + transport="grpc", + ) + + # Mock the actual call, and fake the request. + with mock.patch.object(type(client.transport.create_cluster), "__call__") as call: + call.return_value = operations_pb2.Operation(name="operations/op") + client.create_cluster(request=None) + + # Establish that the underlying stub method was called. + call.assert_called() + _, args, _ = call.mock_calls[0] + request_msg = cloud_redis_cluster.CreateClusterRequest() + assert args[0] == request_msg + + +# This test is a coverage failsafe to make sure that totally empty calls, +# i.e. request == None and no flattened fields passed, work. +def test_create_acl_policy_empty_call_grpc(): + client = CloudRedisClusterClient( + credentials=ga_credentials.AnonymousCredentials(), + transport="grpc", + ) + + # Mock the actual call, and fake the request. + with mock.patch.object( + type(client.transport.create_acl_policy), "__call__" + ) as call: + call.return_value = cloud_redis_cluster.AclPolicy() + client.create_acl_policy(request=None) + + # Establish that the underlying stub method was called. + call.assert_called() + _, args, _ = call.mock_calls[0] + request_msg = cloud_redis_cluster.CreateAclPolicyRequest() + 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_cluster_certificate_authority_empty_call_grpc(): + client = CloudRedisClusterClient( + credentials=ga_credentials.AnonymousCredentials(), + transport="grpc", + ) + + # Mock the actual call, and fake the request. + with mock.patch.object( + type(client.transport.get_cluster_certificate_authority), "__call__" + ) as call: + call.return_value = cloud_redis_cluster.CertificateAuthority() + client.get_cluster_certificate_authority(request=None) + + # Establish that the underlying stub method was called. + call.assert_called() + _, args, _ = call.mock_calls[0] + request_msg = cloud_redis_cluster.GetClusterCertificateAuthorityRequest() + 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_shared_regional_certificate_authority_empty_call_grpc(): + client = CloudRedisClusterClient( + credentials=ga_credentials.AnonymousCredentials(), + transport="grpc", + ) + + # Mock the actual call, and fake the request. + with mock.patch.object( + type(client.transport.get_shared_regional_certificate_authority), "__call__" + ) as call: + call.return_value = cloud_redis_cluster.SharedRegionalCertificateAuthority() + client.get_shared_regional_certificate_authority(request=None) + + # Establish that the underlying stub method was called. + call.assert_called() + _, args, _ = call.mock_calls[0] + request_msg = cloud_redis_cluster.GetSharedRegionalCertificateAuthorityRequest() + 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_reschedule_cluster_maintenance_empty_call_grpc(): + client = CloudRedisClusterClient( + credentials=ga_credentials.AnonymousCredentials(), + transport="grpc", + ) + + # Mock the actual call, and fake the request. + with mock.patch.object( + type(client.transport.reschedule_cluster_maintenance), "__call__" + ) as call: + call.return_value = operations_pb2.Operation(name="operations/op") + client.reschedule_cluster_maintenance(request=None) + + # Establish that the underlying stub method was called. + call.assert_called() + _, args, _ = call.mock_calls[0] + request_msg = cloud_redis_cluster.RescheduleClusterMaintenanceRequest() + 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_backup_collections_empty_call_grpc(): + client = CloudRedisClusterClient( + credentials=ga_credentials.AnonymousCredentials(), + transport="grpc", + ) + + # Mock the actual call, and fake the request. + with mock.patch.object( + type(client.transport.list_backup_collections), "__call__" + ) as call: + call.return_value = cloud_redis_cluster.ListBackupCollectionsResponse() + client.list_backup_collections(request=None) + + # Establish that the underlying stub method was called. + call.assert_called() + _, args, _ = call.mock_calls[0] + request_msg = cloud_redis_cluster.ListBackupCollectionsRequest() + 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_backup_collection_empty_call_grpc(): + client = CloudRedisClusterClient( + credentials=ga_credentials.AnonymousCredentials(), + transport="grpc", + ) + + # Mock the actual call, and fake the request. + with mock.patch.object( + type(client.transport.get_backup_collection), "__call__" + ) as call: + call.return_value = cloud_redis_cluster.BackupCollection() + client.get_backup_collection(request=None) + + # Establish that the underlying stub method was called. + call.assert_called() + _, args, _ = call.mock_calls[0] + request_msg = cloud_redis_cluster.GetBackupCollectionRequest() + 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_backups_empty_call_grpc(): + client = CloudRedisClusterClient( + credentials=ga_credentials.AnonymousCredentials(), + transport="grpc", + ) + + # Mock the actual call, and fake the request. + with mock.patch.object(type(client.transport.list_backups), "__call__") as call: + call.return_value = cloud_redis_cluster.ListBackupsResponse() + client.list_backups(request=None) + + # Establish that the underlying stub method was called. + call.assert_called() + _, args, _ = call.mock_calls[0] + request_msg = cloud_redis_cluster.ListBackupsRequest() + 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_backup_empty_call_grpc(): + client = CloudRedisClusterClient( + credentials=ga_credentials.AnonymousCredentials(), + transport="grpc", + ) + + # Mock the actual call, and fake the request. + with mock.patch.object(type(client.transport.get_backup), "__call__") as call: + call.return_value = cloud_redis_cluster.Backup() + client.get_backup(request=None) + + # Establish that the underlying stub method was called. + call.assert_called() + _, args, _ = call.mock_calls[0] + request_msg = cloud_redis_cluster.GetBackupRequest() + 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_backup_empty_call_grpc(): + client = CloudRedisClusterClient( + credentials=ga_credentials.AnonymousCredentials(), + transport="grpc", + ) + + # Mock the actual call, and fake the request. + with mock.patch.object(type(client.transport.delete_backup), "__call__") as call: + call.return_value = operations_pb2.Operation(name="operations/op") + client.delete_backup(request=None) + + # Establish that the underlying stub method was called. + call.assert_called() + _, args, _ = call.mock_calls[0] + request_msg = cloud_redis_cluster.DeleteBackupRequest() + 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_export_backup_empty_call_grpc(): + client = CloudRedisClusterClient( + credentials=ga_credentials.AnonymousCredentials(), + transport="grpc", + ) + + # Mock the actual call, and fake the request. + with mock.patch.object(type(client.transport.export_backup), "__call__") as call: + call.return_value = operations_pb2.Operation(name="operations/op") + client.export_backup(request=None) + + # Establish that the underlying stub method was called. + call.assert_called() + _, args, _ = call.mock_calls[0] + request_msg = cloud_redis_cluster.ExportBackupRequest() + 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_backup_cluster_empty_call_grpc(): + client = CloudRedisClusterClient( + credentials=ga_credentials.AnonymousCredentials(), + transport="grpc", + ) + + # Mock the actual call, and fake the request. + with mock.patch.object(type(client.transport.backup_cluster), "__call__") as call: + call.return_value = operations_pb2.Operation(name="operations/op") + client.backup_cluster(request=None) + + # Establish that the underlying stub method was called. + call.assert_called() + _, args, _ = call.mock_calls[0] + request_msg = cloud_redis_cluster.BackupClusterRequest() + 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_token_auth_users_empty_call_grpc(): + client = CloudRedisClusterClient( + credentials=ga_credentials.AnonymousCredentials(), + transport="grpc", + ) + + # Mock the actual call, and fake the request. + with mock.patch.object( + type(client.transport.list_token_auth_users), "__call__" + ) as call: + call.return_value = cloud_redis_cluster.ListTokenAuthUsersResponse() + client.list_token_auth_users(request=None) + + # Establish that the underlying stub method was called. + call.assert_called() + _, args, _ = call.mock_calls[0] + request_msg = cloud_redis_cluster.ListTokenAuthUsersRequest() + 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_token_auth_user_empty_call_grpc(): + client = CloudRedisClusterClient( + credentials=ga_credentials.AnonymousCredentials(), + transport="grpc", + ) + + # Mock the actual call, and fake the request. + with mock.patch.object( + type(client.transport.get_token_auth_user), "__call__" + ) as call: + call.return_value = cloud_redis_cluster.TokenAuthUser() + client.get_token_auth_user(request=None) + + # Establish that the underlying stub method was called. + call.assert_called() + _, args, _ = call.mock_calls[0] + request_msg = cloud_redis_cluster.GetTokenAuthUserRequest() + 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_auth_tokens_empty_call_grpc(): + client = CloudRedisClusterClient( + credentials=ga_credentials.AnonymousCredentials(), + transport="grpc", + ) + + # Mock the actual call, and fake the request. + with mock.patch.object(type(client.transport.list_auth_tokens), "__call__") as call: + call.return_value = cloud_redis_cluster.ListAuthTokensResponse() + client.list_auth_tokens(request=None) + + # Establish that the underlying stub method was called. + call.assert_called() + _, args, _ = call.mock_calls[0] + request_msg = cloud_redis_cluster.ListAuthTokensRequest() + 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_auth_token_empty_call_grpc(): + client = CloudRedisClusterClient( + credentials=ga_credentials.AnonymousCredentials(), + transport="grpc", + ) + + # Mock the actual call, and fake the request. + with mock.patch.object(type(client.transport.get_auth_token), "__call__") as call: + call.return_value = cloud_redis_cluster.AuthToken() + client.get_auth_token(request=None) + + # Establish that the underlying stub method was called. + call.assert_called() + _, args, _ = call.mock_calls[0] + request_msg = cloud_redis_cluster.GetAuthTokenRequest() + 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_add_token_auth_user_empty_call_grpc(): + client = CloudRedisClusterClient( + credentials=ga_credentials.AnonymousCredentials(), + transport="grpc", + ) + + # Mock the actual call, and fake the request. + with mock.patch.object( + type(client.transport.add_token_auth_user), "__call__" + ) as call: + call.return_value = operations_pb2.Operation(name="operations/op") + client.add_token_auth_user(request=None) + + # Establish that the underlying stub method was called. + call.assert_called() + _, args, _ = call.mock_calls[0] + request_msg = cloud_redis_cluster.AddTokenAuthUserRequest() + 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_token_auth_user_empty_call_grpc(): + client = CloudRedisClusterClient( + credentials=ga_credentials.AnonymousCredentials(), + transport="grpc", + ) + + # Mock the actual call, and fake the request. + with mock.patch.object( + type(client.transport.delete_token_auth_user), "__call__" + ) as call: + call.return_value = operations_pb2.Operation(name="operations/op") + client.delete_token_auth_user(request=None) + + # Establish that the underlying stub method was called. + call.assert_called() + _, args, _ = call.mock_calls[0] + request_msg = cloud_redis_cluster.DeleteTokenAuthUserRequest() + 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_add_auth_token_empty_call_grpc(): + client = CloudRedisClusterClient( + credentials=ga_credentials.AnonymousCredentials(), + transport="grpc", + ) + + # Mock the actual call, and fake the request. + with mock.patch.object(type(client.transport.add_auth_token), "__call__") as call: + call.return_value = operations_pb2.Operation(name="operations/op") + client.add_auth_token(request=None) + + # Establish that the underlying stub method was called. + call.assert_called() + _, args, _ = call.mock_calls[0] + request_msg = cloud_redis_cluster.AddAuthTokenRequest() + 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_auth_token_empty_call_grpc(): + client = CloudRedisClusterClient( + credentials=ga_credentials.AnonymousCredentials(), + transport="grpc", + ) + + # Mock the actual call, and fake the request. + with mock.patch.object( + type(client.transport.delete_auth_token), "__call__" + ) as call: + call.return_value = operations_pb2.Operation(name="operations/op") + client.delete_auth_token(request=None) + + # Establish that the underlying stub method was called. + call.assert_called() + _, args, _ = call.mock_calls[0] + request_msg = cloud_redis_cluster.DeleteAuthTokenRequest() + assert args[0] == request_msg + + +def test_transport_kind_grpc_asyncio(): + transport = CloudRedisClusterAsyncClient.get_transport_class("grpc_asyncio")( + credentials=async_anonymous_credentials() + ) + assert transport.kind == "grpc_asyncio" + + +def test_initialize_client_w_grpc_asyncio(): + client = CloudRedisClusterAsyncClient( + 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_list_clusters_empty_call_grpc_asyncio(): + client = CloudRedisClusterAsyncClient( + credentials=async_anonymous_credentials(), + transport="grpc_asyncio", + ) + + # Mock the actual call, and fake the request. + with mock.patch.object(type(client.transport.list_clusters), "__call__") as call: + # Designate an appropriate return value for the call. + call.return_value = grpc_helpers_async.FakeUnaryUnaryCall( + cloud_redis_cluster.ListClustersResponse( + next_page_token="next_page_token_value", + unreachable=["unreachable_value"], + ) + ) + await client.list_clusters(request=None) + + # Establish that the underlying stub method was called. + call.assert_called() + _, args, _ = call.mock_calls[0] + request_msg = cloud_redis_cluster.ListClustersRequest() + 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_acl_policies_empty_call_grpc_asyncio(): + client = CloudRedisClusterAsyncClient( + credentials=async_anonymous_credentials(), + transport="grpc_asyncio", + ) + + # Mock the actual call, and fake the request. + with mock.patch.object( + type(client.transport.list_acl_policies), "__call__" + ) as call: + # Designate an appropriate return value for the call. + call.return_value = grpc_helpers_async.FakeUnaryUnaryCall( + cloud_redis_cluster.ListAclPoliciesResponse( + next_page_token="next_page_token_value", + unreachable=["unreachable_value"], + ) + ) + await client.list_acl_policies(request=None) + + # Establish that the underlying stub method was called. + call.assert_called() + _, args, _ = call.mock_calls[0] + request_msg = cloud_redis_cluster.ListAclPoliciesRequest() + 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_cluster_empty_call_grpc_asyncio(): + client = CloudRedisClusterAsyncClient( + credentials=async_anonymous_credentials(), + transport="grpc_asyncio", + ) + + # Mock the actual call, and fake the request. + with mock.patch.object(type(client.transport.get_cluster), "__call__") as call: + # Designate an appropriate return value for the call. + call.return_value = grpc_helpers_async.FakeUnaryUnaryCall( + cloud_redis_cluster.Cluster( + name="name_value", + state=cloud_redis_cluster.Cluster.State.CREATING, + uid="uid_value", + replica_count=1384, + authorization_mode=cloud_redis_cluster.AuthorizationMode.AUTH_MODE_IAM_AUTH, + transit_encryption_mode=cloud_redis_cluster.TransitEncryptionMode.TRANSIT_ENCRYPTION_MODE_DISABLED, + size_gb=739, + shard_count=1178, + node_type=cloud_redis_cluster.NodeType.REDIS_SHARED_CORE_NANO, + precise_size_gb=0.15810000000000002, + deletion_protection_enabled=True, + backup_collection="backup_collection_value", + kms_key="kms_key_value", + async_cluster_endpoints_deletion_enabled=True, + server_ca_mode=cloud_redis_cluster.ServerCaMode.SERVER_CA_MODE_GOOGLE_MANAGED_PER_INSTANCE_CA, + server_ca_pool="server_ca_pool_value", + rotate_server_certificate=True, + acl_policy="acl_policy_value", + ) + ) + await client.get_cluster(request=None) + + # Establish that the underlying stub method was called. + call.assert_called() + _, args, _ = call.mock_calls[0] + request_msg = cloud_redis_cluster.GetClusterRequest() + 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_acl_policy_empty_call_grpc_asyncio(): + client = CloudRedisClusterAsyncClient( + credentials=async_anonymous_credentials(), + transport="grpc_asyncio", + ) + + # Mock the actual call, and fake the request. + with mock.patch.object(type(client.transport.get_acl_policy), "__call__") as call: + # Designate an appropriate return value for the call. + call.return_value = grpc_helpers_async.FakeUnaryUnaryCall( + cloud_redis_cluster.AclPolicy( + name="name_value", + state=cloud_redis_cluster.AclPolicy.State.ACTIVE, + etag="etag_value", + ) + ) + await client.get_acl_policy(request=None) + + # Establish that the underlying stub method was called. + call.assert_called() + _, args, _ = call.mock_calls[0] + request_msg = cloud_redis_cluster.GetAclPolicyRequest() + 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_cluster_empty_call_grpc_asyncio(): + client = CloudRedisClusterAsyncClient( + credentials=async_anonymous_credentials(), + transport="grpc_asyncio", + ) + + # Mock the actual call, and fake the request. + with mock.patch.object(type(client.transport.update_cluster), "__call__") as call: + # Designate an appropriate return value for the call. + call.return_value = grpc_helpers_async.FakeUnaryUnaryCall( + operations_pb2.Operation(name="operations/spam") + ) + await client.update_cluster(request=None) + + # Establish that the underlying stub method was called. + call.assert_called() + _, args, _ = call.mock_calls[0] + request_msg = cloud_redis_cluster.UpdateClusterRequest() + 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_acl_policy_empty_call_grpc_asyncio(): + client = CloudRedisClusterAsyncClient( + credentials=async_anonymous_credentials(), + transport="grpc_asyncio", + ) + + # Mock the actual call, and fake the request. + with mock.patch.object( + type(client.transport.update_acl_policy), "__call__" + ) as call: + # Designate an appropriate return value for the call. + call.return_value = grpc_helpers_async.FakeUnaryUnaryCall( + operations_pb2.Operation(name="operations/spam") + ) + await client.update_acl_policy(request=None) + + # Establish that the underlying stub method was called. + call.assert_called() + _, args, _ = call.mock_calls[0] + request_msg = cloud_redis_cluster.UpdateAclPolicyRequest() + 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_cluster_empty_call_grpc_asyncio(): + client = CloudRedisClusterAsyncClient( + credentials=async_anonymous_credentials(), + transport="grpc_asyncio", + ) + + # Mock the actual call, and fake the request. + with mock.patch.object(type(client.transport.delete_cluster), "__call__") as call: + # Designate an appropriate return value for the call. + call.return_value = grpc_helpers_async.FakeUnaryUnaryCall( + operations_pb2.Operation(name="operations/spam") + ) + await client.delete_cluster(request=None) + + # Establish that the underlying stub method was called. + call.assert_called() + _, args, _ = call.mock_calls[0] + request_msg = cloud_redis_cluster.DeleteClusterRequest() + 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_acl_policy_empty_call_grpc_asyncio(): + client = CloudRedisClusterAsyncClient( + credentials=async_anonymous_credentials(), + transport="grpc_asyncio", + ) + + # Mock the actual call, and fake the request. + with mock.patch.object( + type(client.transport.delete_acl_policy), "__call__" + ) as call: + # Designate an appropriate return value for the call. + call.return_value = grpc_helpers_async.FakeUnaryUnaryCall( + operations_pb2.Operation(name="operations/spam") + ) + await client.delete_acl_policy(request=None) + + # Establish that the underlying stub method was called. + call.assert_called() + _, args, _ = call.mock_calls[0] + request_msg = cloud_redis_cluster.DeleteAclPolicyRequest() + 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_acl_policy_revision_empty_call_grpc_asyncio(): + client = CloudRedisClusterAsyncClient( + credentials=async_anonymous_credentials(), + transport="grpc_asyncio", + ) + + # Mock the actual call, and fake the request. + with mock.patch.object( + type(client.transport.get_acl_policy_revision), "__call__" + ) as call: + # Designate an appropriate return value for the call. + call.return_value = grpc_helpers_async.FakeUnaryUnaryCall( + cloud_redis_cluster.AclPolicyRevision( + name="name_value", + revision_number=1623, + attached_clusters=["attached_clusters_value"], + ) + ) + await client.get_acl_policy_revision(request=None) + + # Establish that the underlying stub method was called. + call.assert_called() + _, args, _ = call.mock_calls[0] + request_msg = cloud_redis_cluster.GetAclPolicyRevisionRequest() + 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_acl_policy_revisions_empty_call_grpc_asyncio(): + client = CloudRedisClusterAsyncClient( + credentials=async_anonymous_credentials(), + transport="grpc_asyncio", + ) + + # Mock the actual call, and fake the request. + with mock.patch.object( + type(client.transport.list_acl_policy_revisions), "__call__" + ) as call: + # Designate an appropriate return value for the call. + call.return_value = grpc_helpers_async.FakeUnaryUnaryCall( + cloud_redis_cluster.ListAclPolicyRevisionsResponse( + next_page_token="next_page_token_value", + unreachable=["unreachable_value"], + ) + ) + await client.list_acl_policy_revisions(request=None) + + # Establish that the underlying stub method was called. + call.assert_called() + _, args, _ = call.mock_calls[0] + request_msg = cloud_redis_cluster.ListAclPolicyRevisionsRequest() + 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_create_cluster_empty_call_grpc_asyncio(): + client = CloudRedisClusterAsyncClient( + credentials=async_anonymous_credentials(), + transport="grpc_asyncio", + ) + + # Mock the actual call, and fake the request. + with mock.patch.object(type(client.transport.create_cluster), "__call__") as call: + # Designate an appropriate return value for the call. + call.return_value = grpc_helpers_async.FakeUnaryUnaryCall( + operations_pb2.Operation(name="operations/spam") + ) + await client.create_cluster(request=None) + + # Establish that the underlying stub method was called. + call.assert_called() + _, args, _ = call.mock_calls[0] + request_msg = cloud_redis_cluster.CreateClusterRequest() + 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_create_acl_policy_empty_call_grpc_asyncio(): + client = CloudRedisClusterAsyncClient( + credentials=async_anonymous_credentials(), + transport="grpc_asyncio", + ) + + # Mock the actual call, and fake the request. + with mock.patch.object( + type(client.transport.create_acl_policy), "__call__" + ) as call: + # Designate an appropriate return value for the call. + call.return_value = grpc_helpers_async.FakeUnaryUnaryCall( + cloud_redis_cluster.AclPolicy( + name="name_value", + state=cloud_redis_cluster.AclPolicy.State.ACTIVE, + etag="etag_value", + ) + ) + await client.create_acl_policy(request=None) + + # Establish that the underlying stub method was called. + call.assert_called() + _, args, _ = call.mock_calls[0] + request_msg = cloud_redis_cluster.CreateAclPolicyRequest() + 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_cluster_certificate_authority_empty_call_grpc_asyncio(): + client = CloudRedisClusterAsyncClient( + credentials=async_anonymous_credentials(), + transport="grpc_asyncio", + ) + + # Mock the actual call, and fake the request. + with mock.patch.object( + type(client.transport.get_cluster_certificate_authority), "__call__" + ) as call: + # Designate an appropriate return value for the call. + call.return_value = grpc_helpers_async.FakeUnaryUnaryCall( + cloud_redis_cluster.CertificateAuthority( + name="name_value", + ) + ) + await client.get_cluster_certificate_authority(request=None) + + # Establish that the underlying stub method was called. + call.assert_called() + _, args, _ = call.mock_calls[0] + request_msg = cloud_redis_cluster.GetClusterCertificateAuthorityRequest() + 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_shared_regional_certificate_authority_empty_call_grpc_asyncio(): + client = CloudRedisClusterAsyncClient( + credentials=async_anonymous_credentials(), + transport="grpc_asyncio", + ) + + # Mock the actual call, and fake the request. + with mock.patch.object( + type(client.transport.get_shared_regional_certificate_authority), "__call__" + ) as call: + # Designate an appropriate return value for the call. + call.return_value = grpc_helpers_async.FakeUnaryUnaryCall( + cloud_redis_cluster.SharedRegionalCertificateAuthority( + name="name_value", + ) + ) + await client.get_shared_regional_certificate_authority(request=None) + + # Establish that the underlying stub method was called. + call.assert_called() + _, args, _ = call.mock_calls[0] + request_msg = cloud_redis_cluster.GetSharedRegionalCertificateAuthorityRequest() + 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_reschedule_cluster_maintenance_empty_call_grpc_asyncio(): + client = CloudRedisClusterAsyncClient( + credentials=async_anonymous_credentials(), + transport="grpc_asyncio", + ) + + # Mock the actual call, and fake the request. + with mock.patch.object( + type(client.transport.reschedule_cluster_maintenance), "__call__" + ) as call: + # Designate an appropriate return value for the call. + call.return_value = grpc_helpers_async.FakeUnaryUnaryCall( + operations_pb2.Operation(name="operations/spam") + ) + await client.reschedule_cluster_maintenance(request=None) + + # Establish that the underlying stub method was called. + call.assert_called() + _, args, _ = call.mock_calls[0] + request_msg = cloud_redis_cluster.RescheduleClusterMaintenanceRequest() + 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_backup_collections_empty_call_grpc_asyncio(): + client = CloudRedisClusterAsyncClient( + credentials=async_anonymous_credentials(), + transport="grpc_asyncio", + ) + + # Mock the actual call, and fake the request. + with mock.patch.object( + type(client.transport.list_backup_collections), "__call__" + ) as call: + # Designate an appropriate return value for the call. + call.return_value = grpc_helpers_async.FakeUnaryUnaryCall( + cloud_redis_cluster.ListBackupCollectionsResponse( + next_page_token="next_page_token_value", + unreachable=["unreachable_value"], + ) + ) + await client.list_backup_collections(request=None) + + # Establish that the underlying stub method was called. + call.assert_called() + _, args, _ = call.mock_calls[0] + request_msg = cloud_redis_cluster.ListBackupCollectionsRequest() + 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_backup_collection_empty_call_grpc_asyncio(): + client = CloudRedisClusterAsyncClient( + credentials=async_anonymous_credentials(), + transport="grpc_asyncio", + ) + + # Mock the actual call, and fake the request. + with mock.patch.object( + type(client.transport.get_backup_collection), "__call__" + ) as call: + # Designate an appropriate return value for the call. + call.return_value = grpc_helpers_async.FakeUnaryUnaryCall( + cloud_redis_cluster.BackupCollection( + name="name_value", + cluster_uid="cluster_uid_value", + cluster="cluster_value", + kms_key="kms_key_value", + uid="uid_value", + ) + ) + await client.get_backup_collection(request=None) + + # Establish that the underlying stub method was called. + call.assert_called() + _, args, _ = call.mock_calls[0] + request_msg = cloud_redis_cluster.GetBackupCollectionRequest() + 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_backups_empty_call_grpc_asyncio(): + client = CloudRedisClusterAsyncClient( + credentials=async_anonymous_credentials(), + transport="grpc_asyncio", + ) + + # Mock the actual call, and fake the request. + with mock.patch.object(type(client.transport.list_backups), "__call__") as call: + # Designate an appropriate return value for the call. + call.return_value = grpc_helpers_async.FakeUnaryUnaryCall( + cloud_redis_cluster.ListBackupsResponse( + next_page_token="next_page_token_value", + unreachable=["unreachable_value"], + ) + ) + await client.list_backups(request=None) + + # Establish that the underlying stub method was called. + call.assert_called() + _, args, _ = call.mock_calls[0] + request_msg = cloud_redis_cluster.ListBackupsRequest() + 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_backup_empty_call_grpc_asyncio(): + client = CloudRedisClusterAsyncClient( + credentials=async_anonymous_credentials(), + transport="grpc_asyncio", + ) + + # Mock the actual call, and fake the request. + with mock.patch.object(type(client.transport.get_backup), "__call__") as call: + # Designate an appropriate return value for the call. + call.return_value = grpc_helpers_async.FakeUnaryUnaryCall( + cloud_redis_cluster.Backup( + name="name_value", + cluster="cluster_value", + cluster_uid="cluster_uid_value", + total_size_bytes=1732, + engine_version="engine_version_value", + node_type=cloud_redis_cluster.NodeType.REDIS_SHARED_CORE_NANO, + replica_count=1384, + shard_count=1178, + backup_type=cloud_redis_cluster.Backup.BackupType.ON_DEMAND, + state=cloud_redis_cluster.Backup.State.CREATING, + uid="uid_value", + ) + ) + await client.get_backup(request=None) + + # Establish that the underlying stub method was called. + call.assert_called() + _, args, _ = call.mock_calls[0] + request_msg = cloud_redis_cluster.GetBackupRequest() + 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_backup_empty_call_grpc_asyncio(): + client = CloudRedisClusterAsyncClient( + credentials=async_anonymous_credentials(), + transport="grpc_asyncio", + ) + + # Mock the actual call, and fake the request. + with mock.patch.object(type(client.transport.delete_backup), "__call__") as call: + # Designate an appropriate return value for the call. + call.return_value = grpc_helpers_async.FakeUnaryUnaryCall( + operations_pb2.Operation(name="operations/spam") + ) + await client.delete_backup(request=None) + + # Establish that the underlying stub method was called. + call.assert_called() _, args, _ = call.mock_calls[0] request_msg = cloud_redis_cluster.DeleteBackupRequest() 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_export_backup_empty_call_grpc_asyncio(): - client = CloudRedisClusterAsyncClient( - credentials=async_anonymous_credentials(), - transport="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_export_backup_empty_call_grpc_asyncio(): + client = CloudRedisClusterAsyncClient( + credentials=async_anonymous_credentials(), + transport="grpc_asyncio", + ) + + # Mock the actual call, and fake the request. + with mock.patch.object(type(client.transport.export_backup), "__call__") as call: + # Designate an appropriate return value for the call. + call.return_value = grpc_helpers_async.FakeUnaryUnaryCall( + operations_pb2.Operation(name="operations/spam") + ) + await client.export_backup(request=None) + + # Establish that the underlying stub method was called. + call.assert_called() + _, args, _ = call.mock_calls[0] + request_msg = cloud_redis_cluster.ExportBackupRequest() + 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_backup_cluster_empty_call_grpc_asyncio(): + client = CloudRedisClusterAsyncClient( + credentials=async_anonymous_credentials(), + transport="grpc_asyncio", + ) + + # Mock the actual call, and fake the request. + with mock.patch.object(type(client.transport.backup_cluster), "__call__") as call: + # Designate an appropriate return value for the call. + call.return_value = grpc_helpers_async.FakeUnaryUnaryCall( + operations_pb2.Operation(name="operations/spam") + ) + await client.backup_cluster(request=None) + + # Establish that the underlying stub method was called. + call.assert_called() + _, args, _ = call.mock_calls[0] + request_msg = cloud_redis_cluster.BackupClusterRequest() + 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_token_auth_users_empty_call_grpc_asyncio(): + client = CloudRedisClusterAsyncClient( + credentials=async_anonymous_credentials(), + transport="grpc_asyncio", + ) + + # Mock the actual call, and fake the request. + with mock.patch.object( + type(client.transport.list_token_auth_users), "__call__" + ) as call: + # Designate an appropriate return value for the call. + call.return_value = grpc_helpers_async.FakeUnaryUnaryCall( + cloud_redis_cluster.ListTokenAuthUsersResponse( + next_page_token="next_page_token_value", + unreachable=["unreachable_value"], + ) + ) + await client.list_token_auth_users(request=None) + + # Establish that the underlying stub method was called. + call.assert_called() + _, args, _ = call.mock_calls[0] + request_msg = cloud_redis_cluster.ListTokenAuthUsersRequest() + 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_token_auth_user_empty_call_grpc_asyncio(): + client = CloudRedisClusterAsyncClient( + credentials=async_anonymous_credentials(), + transport="grpc_asyncio", + ) + + # Mock the actual call, and fake the request. + with mock.patch.object( + type(client.transport.get_token_auth_user), "__call__" + ) as call: + # Designate an appropriate return value for the call. + call.return_value = grpc_helpers_async.FakeUnaryUnaryCall( + cloud_redis_cluster.TokenAuthUser( + name="name_value", + state=cloud_redis_cluster.TokenAuthUser.State.ACTIVE, + ) + ) + await client.get_token_auth_user(request=None) + + # Establish that the underlying stub method was called. + call.assert_called() + _, args, _ = call.mock_calls[0] + request_msg = cloud_redis_cluster.GetTokenAuthUserRequest() + 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_auth_tokens_empty_call_grpc_asyncio(): + client = CloudRedisClusterAsyncClient( + credentials=async_anonymous_credentials(), + transport="grpc_asyncio", + ) + + # Mock the actual call, and fake the request. + with mock.patch.object(type(client.transport.list_auth_tokens), "__call__") as call: + # Designate an appropriate return value for the call. + call.return_value = grpc_helpers_async.FakeUnaryUnaryCall( + cloud_redis_cluster.ListAuthTokensResponse( + next_page_token="next_page_token_value", + unreachable=["unreachable_value"], + ) + ) + await client.list_auth_tokens(request=None) + + # Establish that the underlying stub method was called. + call.assert_called() + _, args, _ = call.mock_calls[0] + request_msg = cloud_redis_cluster.ListAuthTokensRequest() + 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_auth_token_empty_call_grpc_asyncio(): + client = CloudRedisClusterAsyncClient( + credentials=async_anonymous_credentials(), + transport="grpc_asyncio", + ) + + # Mock the actual call, and fake the request. + with mock.patch.object(type(client.transport.get_auth_token), "__call__") as call: + # Designate an appropriate return value for the call. + call.return_value = grpc_helpers_async.FakeUnaryUnaryCall( + cloud_redis_cluster.AuthToken( + name="name_value", + token="token_value", + state=cloud_redis_cluster.AuthToken.State.ACTIVE, + ) + ) + await client.get_auth_token(request=None) + + # Establish that the underlying stub method was called. + call.assert_called() + _, args, _ = call.mock_calls[0] + request_msg = cloud_redis_cluster.GetAuthTokenRequest() + 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_add_token_auth_user_empty_call_grpc_asyncio(): + client = CloudRedisClusterAsyncClient( + credentials=async_anonymous_credentials(), + transport="grpc_asyncio", + ) + + # Mock the actual call, and fake the request. + with mock.patch.object( + type(client.transport.add_token_auth_user), "__call__" + ) as call: + # Designate an appropriate return value for the call. + call.return_value = grpc_helpers_async.FakeUnaryUnaryCall( + operations_pb2.Operation(name="operations/spam") + ) + await client.add_token_auth_user(request=None) + + # Establish that the underlying stub method was called. + call.assert_called() + _, args, _ = call.mock_calls[0] + request_msg = cloud_redis_cluster.AddTokenAuthUserRequest() + 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_token_auth_user_empty_call_grpc_asyncio(): + client = CloudRedisClusterAsyncClient( + credentials=async_anonymous_credentials(), + transport="grpc_asyncio", + ) + + # Mock the actual call, and fake the request. + with mock.patch.object( + type(client.transport.delete_token_auth_user), "__call__" + ) as call: + # Designate an appropriate return value for the call. + call.return_value = grpc_helpers_async.FakeUnaryUnaryCall( + operations_pb2.Operation(name="operations/spam") + ) + await client.delete_token_auth_user(request=None) + + # Establish that the underlying stub method was called. + call.assert_called() + _, args, _ = call.mock_calls[0] + request_msg = cloud_redis_cluster.DeleteTokenAuthUserRequest() + 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_add_auth_token_empty_call_grpc_asyncio(): + client = CloudRedisClusterAsyncClient( + credentials=async_anonymous_credentials(), + transport="grpc_asyncio", + ) + + # Mock the actual call, and fake the request. + with mock.patch.object(type(client.transport.add_auth_token), "__call__") as call: + # Designate an appropriate return value for the call. + call.return_value = grpc_helpers_async.FakeUnaryUnaryCall( + operations_pb2.Operation(name="operations/spam") + ) + await client.add_auth_token(request=None) + + # Establish that the underlying stub method was called. + call.assert_called() + _, args, _ = call.mock_calls[0] + request_msg = cloud_redis_cluster.AddAuthTokenRequest() + 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_auth_token_empty_call_grpc_asyncio(): + client = CloudRedisClusterAsyncClient( + credentials=async_anonymous_credentials(), + transport="grpc_asyncio", + ) + + # Mock the actual call, and fake the request. + with mock.patch.object( + type(client.transport.delete_auth_token), "__call__" + ) as call: + # Designate an appropriate return value for the call. + call.return_value = grpc_helpers_async.FakeUnaryUnaryCall( + operations_pb2.Operation(name="operations/spam") + ) + await client.delete_auth_token(request=None) + + # Establish that the underlying stub method was called. + call.assert_called() + _, args, _ = call.mock_calls[0] + request_msg = cloud_redis_cluster.DeleteAuthTokenRequest() + assert args[0] == request_msg + + +def test_transport_kind_rest(): + transport = CloudRedisClusterClient.get_transport_class("rest")( + credentials=ga_credentials.AnonymousCredentials() + ) + assert transport.kind == "rest" + + +def test_list_clusters_rest_bad_request( + request_type=cloud_redis_cluster.ListClustersRequest, +): + client = CloudRedisClusterClient( + 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_clusters(request) + + +@pytest.mark.parametrize( + "request_type", + [ + cloud_redis_cluster.ListClustersRequest, + dict, + ], +) +def test_list_clusters_rest_call_success(request_type): + client = CloudRedisClusterClient( + 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 = cloud_redis_cluster.ListClustersResponse( + next_page_token="next_page_token_value", + unreachable=["unreachable_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 = cloud_redis_cluster.ListClustersResponse.pb(return_value) + json_return_value = json_format.MessageToJson(return_value) + response_value.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_clusters(request) + + # Establish that the response is the type that we expect. + assert isinstance(response, pagers.ListClustersPager) + assert response.next_page_token == "next_page_token_value" + assert response.unreachable == ["unreachable_value"] + + +@pytest.mark.parametrize("null_interceptor", [True, False]) +def test_list_clusters_rest_interceptors(null_interceptor): + transport = transports.CloudRedisClusterRestTransport( + credentials=ga_credentials.AnonymousCredentials(), + interceptor=None + if null_interceptor + else transports.CloudRedisClusterRestInterceptor(), + ) + client = CloudRedisClusterClient(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.CloudRedisClusterRestInterceptor, "post_list_clusters" + ) as post, + mock.patch.object( + transports.CloudRedisClusterRestInterceptor, + "post_list_clusters_with_metadata", + ) as post_with_metadata, + mock.patch.object( + transports.CloudRedisClusterRestInterceptor, "pre_list_clusters" + ) as pre, + ): + pre.assert_not_called() + post.assert_not_called() + post_with_metadata.assert_not_called() + pb_message = cloud_redis_cluster.ListClustersRequest.pb( + cloud_redis_cluster.ListClustersRequest() + ) + 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 = cloud_redis_cluster.ListClustersResponse.to_json( + cloud_redis_cluster.ListClustersResponse() + ) + req.return_value.content = return_value + + request = cloud_redis_cluster.ListClustersRequest() + metadata = [ + ("key", "val"), + ("cephalopod", "squid"), + ] + pre.return_value = request, metadata + post.return_value = cloud_redis_cluster.ListClustersResponse() + post_with_metadata.return_value = ( + cloud_redis_cluster.ListClustersResponse(), + metadata, + ) + + client.list_clusters( + request, + metadata=[ + ("key", "val"), + ("cephalopod", "squid"), + ], + ) + + pre.assert_called_once() + post.assert_called_once() + post_with_metadata.assert_called_once() + + +def test_list_acl_policies_rest_bad_request( + request_type=cloud_redis_cluster.ListAclPoliciesRequest, +): + client = CloudRedisClusterClient( + 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_acl_policies(request) + + +@pytest.mark.parametrize( + "request_type", + [ + cloud_redis_cluster.ListAclPoliciesRequest, + dict, + ], +) +def test_list_acl_policies_rest_call_success(request_type): + client = CloudRedisClusterClient( + 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 = cloud_redis_cluster.ListAclPoliciesResponse( + next_page_token="next_page_token_value", + unreachable=["unreachable_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 = cloud_redis_cluster.ListAclPoliciesResponse.pb(return_value) + json_return_value = json_format.MessageToJson(return_value) + response_value.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_acl_policies(request) + + # Establish that the response is the type that we expect. + assert isinstance(response, pagers.ListAclPoliciesPager) + assert response.next_page_token == "next_page_token_value" + assert response.unreachable == ["unreachable_value"] + + +@pytest.mark.parametrize("null_interceptor", [True, False]) +def test_list_acl_policies_rest_interceptors(null_interceptor): + transport = transports.CloudRedisClusterRestTransport( + credentials=ga_credentials.AnonymousCredentials(), + interceptor=None + if null_interceptor + else transports.CloudRedisClusterRestInterceptor(), + ) + client = CloudRedisClusterClient(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.CloudRedisClusterRestInterceptor, "post_list_acl_policies" + ) as post, + mock.patch.object( + transports.CloudRedisClusterRestInterceptor, + "post_list_acl_policies_with_metadata", + ) as post_with_metadata, + mock.patch.object( + transports.CloudRedisClusterRestInterceptor, "pre_list_acl_policies" + ) as pre, + ): + pre.assert_not_called() + post.assert_not_called() + post_with_metadata.assert_not_called() + pb_message = cloud_redis_cluster.ListAclPoliciesRequest.pb( + cloud_redis_cluster.ListAclPoliciesRequest() + ) + 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 = cloud_redis_cluster.ListAclPoliciesResponse.to_json( + cloud_redis_cluster.ListAclPoliciesResponse() + ) + req.return_value.content = return_value + + request = cloud_redis_cluster.ListAclPoliciesRequest() + metadata = [ + ("key", "val"), + ("cephalopod", "squid"), + ] + pre.return_value = request, metadata + post.return_value = cloud_redis_cluster.ListAclPoliciesResponse() + post_with_metadata.return_value = ( + cloud_redis_cluster.ListAclPoliciesResponse(), + metadata, + ) + + client.list_acl_policies( + request, + metadata=[ + ("key", "val"), + ("cephalopod", "squid"), + ], + ) + + pre.assert_called_once() + post.assert_called_once() + post_with_metadata.assert_called_once() + + +def test_get_cluster_rest_bad_request( + request_type=cloud_redis_cluster.GetClusterRequest, +): + client = CloudRedisClusterClient( + credentials=ga_credentials.AnonymousCredentials(), transport="rest" + ) + # send a request that will satisfy transcoding + request_init = {"name": "projects/sample1/locations/sample2/clusters/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_cluster(request) + + +@pytest.mark.parametrize( + "request_type", + [ + cloud_redis_cluster.GetClusterRequest, + dict, + ], +) +def test_get_cluster_rest_call_success(request_type): + client = CloudRedisClusterClient( + credentials=ga_credentials.AnonymousCredentials(), transport="rest" + ) + + # send a request that will satisfy transcoding + request_init = {"name": "projects/sample1/locations/sample2/clusters/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 = cloud_redis_cluster.Cluster( + name="name_value", + state=cloud_redis_cluster.Cluster.State.CREATING, + uid="uid_value", + replica_count=1384, + authorization_mode=cloud_redis_cluster.AuthorizationMode.AUTH_MODE_IAM_AUTH, + transit_encryption_mode=cloud_redis_cluster.TransitEncryptionMode.TRANSIT_ENCRYPTION_MODE_DISABLED, + size_gb=739, + shard_count=1178, + node_type=cloud_redis_cluster.NodeType.REDIS_SHARED_CORE_NANO, + precise_size_gb=0.15810000000000002, + deletion_protection_enabled=True, + backup_collection="backup_collection_value", + kms_key="kms_key_value", + async_cluster_endpoints_deletion_enabled=True, + server_ca_mode=cloud_redis_cluster.ServerCaMode.SERVER_CA_MODE_GOOGLE_MANAGED_PER_INSTANCE_CA, + server_ca_pool="server_ca_pool_value", + rotate_server_certificate=True, + acl_policy="acl_policy_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 = cloud_redis_cluster.Cluster.pb(return_value) + json_return_value = json_format.MessageToJson(return_value) + response_value.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_cluster(request) + + # Establish that the response is the type that we expect. + assert isinstance(response, cloud_redis_cluster.Cluster) + assert response.name == "name_value" + assert response.state == cloud_redis_cluster.Cluster.State.CREATING + assert response.uid == "uid_value" + assert response.replica_count == 1384 + assert ( + response.authorization_mode + == cloud_redis_cluster.AuthorizationMode.AUTH_MODE_IAM_AUTH + ) + assert ( + response.transit_encryption_mode + == cloud_redis_cluster.TransitEncryptionMode.TRANSIT_ENCRYPTION_MODE_DISABLED + ) + assert response.size_gb == 739 + assert response.shard_count == 1178 + assert response.node_type == cloud_redis_cluster.NodeType.REDIS_SHARED_CORE_NANO + assert math.isclose(response.precise_size_gb, 0.15810000000000002, rel_tol=1e-6) + assert response.deletion_protection_enabled is True + assert response.backup_collection == "backup_collection_value" + assert response.kms_key == "kms_key_value" + assert response.async_cluster_endpoints_deletion_enabled is True + assert ( + response.server_ca_mode + == cloud_redis_cluster.ServerCaMode.SERVER_CA_MODE_GOOGLE_MANAGED_PER_INSTANCE_CA + ) + assert response.server_ca_pool == "server_ca_pool_value" + assert response.rotate_server_certificate is True + assert response.acl_policy == "acl_policy_value" + + +@pytest.mark.parametrize("null_interceptor", [True, False]) +def test_get_cluster_rest_interceptors(null_interceptor): + transport = transports.CloudRedisClusterRestTransport( + credentials=ga_credentials.AnonymousCredentials(), + interceptor=None + if null_interceptor + else transports.CloudRedisClusterRestInterceptor(), + ) + client = CloudRedisClusterClient(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.CloudRedisClusterRestInterceptor, "post_get_cluster" + ) as post, + mock.patch.object( + transports.CloudRedisClusterRestInterceptor, + "post_get_cluster_with_metadata", + ) as post_with_metadata, + mock.patch.object( + transports.CloudRedisClusterRestInterceptor, "pre_get_cluster" + ) as pre, + ): + pre.assert_not_called() + post.assert_not_called() + post_with_metadata.assert_not_called() + pb_message = cloud_redis_cluster.GetClusterRequest.pb( + cloud_redis_cluster.GetClusterRequest() + ) + 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 = cloud_redis_cluster.Cluster.to_json( + cloud_redis_cluster.Cluster() + ) + req.return_value.content = return_value + + request = cloud_redis_cluster.GetClusterRequest() + metadata = [ + ("key", "val"), + ("cephalopod", "squid"), + ] + pre.return_value = request, metadata + post.return_value = cloud_redis_cluster.Cluster() + post_with_metadata.return_value = cloud_redis_cluster.Cluster(), metadata + + client.get_cluster( + request, + metadata=[ + ("key", "val"), + ("cephalopod", "squid"), + ], + ) + + pre.assert_called_once() + post.assert_called_once() + post_with_metadata.assert_called_once() + + +def test_get_acl_policy_rest_bad_request( + request_type=cloud_redis_cluster.GetAclPolicyRequest, +): + client = CloudRedisClusterClient( + credentials=ga_credentials.AnonymousCredentials(), transport="rest" + ) + # send a request that will satisfy transcoding + request_init = {"name": "projects/sample1/locations/sample2/aclPolicies/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_acl_policy(request) + + +@pytest.mark.parametrize( + "request_type", + [ + cloud_redis_cluster.GetAclPolicyRequest, + dict, + ], +) +def test_get_acl_policy_rest_call_success(request_type): + client = CloudRedisClusterClient( + credentials=ga_credentials.AnonymousCredentials(), transport="rest" + ) + + # send a request that will satisfy transcoding + request_init = {"name": "projects/sample1/locations/sample2/aclPolicies/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 = cloud_redis_cluster.AclPolicy( + name="name_value", + state=cloud_redis_cluster.AclPolicy.State.ACTIVE, + etag="etag_value", + ) + + # Wrap the value into a proper Response obj + response_value = mock.Mock() + response_value.status_code = 200 + + # Convert return value to protobuf type + return_value = cloud_redis_cluster.AclPolicy.pb(return_value) + json_return_value = json_format.MessageToJson(return_value) + response_value.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_acl_policy(request) + + # Establish that the response is the type that we expect. + assert isinstance(response, cloud_redis_cluster.AclPolicy) + assert response.name == "name_value" + assert response.state == cloud_redis_cluster.AclPolicy.State.ACTIVE + assert response.etag == "etag_value" + + +@pytest.mark.parametrize("null_interceptor", [True, False]) +def test_get_acl_policy_rest_interceptors(null_interceptor): + transport = transports.CloudRedisClusterRestTransport( + credentials=ga_credentials.AnonymousCredentials(), + interceptor=None + if null_interceptor + else transports.CloudRedisClusterRestInterceptor(), + ) + client = CloudRedisClusterClient(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.CloudRedisClusterRestInterceptor, "post_get_acl_policy" + ) as post, + mock.patch.object( + transports.CloudRedisClusterRestInterceptor, + "post_get_acl_policy_with_metadata", + ) as post_with_metadata, + mock.patch.object( + transports.CloudRedisClusterRestInterceptor, "pre_get_acl_policy" + ) as pre, + ): + pre.assert_not_called() + post.assert_not_called() + post_with_metadata.assert_not_called() + pb_message = cloud_redis_cluster.GetAclPolicyRequest.pb( + cloud_redis_cluster.GetAclPolicyRequest() + ) + 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 = cloud_redis_cluster.AclPolicy.to_json( + cloud_redis_cluster.AclPolicy() + ) + req.return_value.content = return_value + + request = cloud_redis_cluster.GetAclPolicyRequest() + metadata = [ + ("key", "val"), + ("cephalopod", "squid"), + ] + pre.return_value = request, metadata + post.return_value = cloud_redis_cluster.AclPolicy() + post_with_metadata.return_value = cloud_redis_cluster.AclPolicy(), metadata + + client.get_acl_policy( + request, + metadata=[ + ("key", "val"), + ("cephalopod", "squid"), + ], + ) + + pre.assert_called_once() + post.assert_called_once() + post_with_metadata.assert_called_once() + + +def test_update_cluster_rest_bad_request( + request_type=cloud_redis_cluster.UpdateClusterRequest, +): + client = CloudRedisClusterClient( + credentials=ga_credentials.AnonymousCredentials(), transport="rest" + ) + # send a request that will satisfy transcoding + request_init = { + "cluster": {"name": "projects/sample1/locations/sample2/clusters/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_cluster(request) + + +@pytest.mark.parametrize( + "request_type", + [ + cloud_redis_cluster.UpdateClusterRequest, + dict, + ], +) +def test_update_cluster_rest_call_success(request_type): + client = CloudRedisClusterClient( + credentials=ga_credentials.AnonymousCredentials(), transport="rest" + ) + + # send a request that will satisfy transcoding + request_init = { + "cluster": {"name": "projects/sample1/locations/sample2/clusters/sample3"} + } + request_init["cluster"] = { + "gcs_source": {"uris": ["uris_value1", "uris_value2"]}, + "managed_backup_source": {"backup": "backup_value"}, + "name": "projects/sample1/locations/sample2/clusters/sample3", + "create_time": {"seconds": 751, "nanos": 543}, + "state": 1, + "uid": "uid_value", + "replica_count": 1384, + "authorization_mode": 1, + "transit_encryption_mode": 1, + "size_gb": 739, + "shard_count": 1178, + "psc_configs": [{"network": "network_value"}], + "discovery_endpoints": [ + {"address": "address_value", "port": 453, "psc_config": {}} + ], + "psc_connections": [ + { + "psc_connection_id": "psc_connection_id_value", + "address": "address_value", + "forwarding_rule": "forwarding_rule_value", + "project_id": "project_id_value", + "network": "network_value", + "service_attachment": "service_attachment_value", + "psc_connection_status": 1, + "connection_type": 1, + } + ], + "state_info": { + "update_info": {"target_shard_count": 1920, "target_replica_count": 2126} + }, + "node_type": 1, + "persistence_config": { + "mode": 1, + "rdb_config": {"rdb_snapshot_period": 1, "rdb_snapshot_start_time": {}}, + "aof_config": {"append_fsync": 1}, + }, + "redis_configs": {}, + "precise_size_gb": 0.15810000000000002, + "zone_distribution_config": {"mode": 1, "zone": "zone_value"}, + "cross_cluster_replication_config": { + "cluster_role": 1, + "primary_cluster": {"cluster": "cluster_value", "uid": "uid_value"}, + "secondary_clusters": {}, + "update_time": {}, + "membership": {"primary_cluster": {}, "secondary_clusters": {}}, + }, + "deletion_protection_enabled": True, + "maintenance_policy": { + "create_time": {}, + "update_time": {}, + "weekly_maintenance_window": [ + { + "day": 1, + "start_time": { + "hours": 561, + "minutes": 773, + "seconds": 751, + "nanos": 543, + }, + } + ], + }, + "maintenance_schedule": {"start_time": {}, "end_time": {}}, + "psc_service_attachments": [ + {"service_attachment": "service_attachment_value", "connection_type": 1} + ], + "cluster_endpoints": [ + { + "connections": [ + { + "psc_auto_connection": { + "psc_connection_id": "psc_connection_id_value", + "address": "address_value", + "forwarding_rule": "forwarding_rule_value", + "project_id": "project_id_value", + "network": "network_value", + "service_attachment": "service_attachment_value", + "psc_connection_status": 1, + "connection_type": 1, + }, + "psc_connection": {}, + } + ] + } + ], + "backup_collection": "backup_collection_value", + "kms_key": "kms_key_value", + "automated_backup_config": { + "fixed_frequency_schedule": {"start_time": {}}, + "automated_backup_mode": 1, + "retention": {"seconds": 751, "nanos": 543}, + }, + "encryption_info": { + "encryption_type": 1, + "kms_key_versions": ["kms_key_versions_value1", "kms_key_versions_value2"], + "kms_key_primary_state": 1, + "last_update_time": {}, + }, + "async_cluster_endpoints_deletion_enabled": True, + "server_ca_mode": 1, + "server_ca_pool": "server_ca_pool_value", + "rotate_server_certificate": True, + "acl_policy": "acl_policy_value", + "acl_policy_info": { + "applied_acl_policy": "applied_acl_policy_value", + "applied_acl_policy_revision": "applied_acl_policy_revision_value", + "applied_acl_policy_revision_number": 3603, + "acl_policy_revision_statuses": [ + { + "acl_policy_revision": "acl_policy_revision_value", + "acl_policy_revision_number": 2773, + "state": 1, + "error_message": "error_message_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 = cloud_redis_cluster.UpdateClusterRequest.meta.fields["cluster"] + + 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["cluster"].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["cluster"][field])): + del request_init["cluster"][field][i][subfield] + else: + del request_init["cluster"][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 = operations_pb2.Operation(name="operations/spam") + + # 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.update_cluster(request) + + # Establish that the response is the type that we expect. + json_return_value = json_format.MessageToJson(return_value) + + +@pytest.mark.parametrize("null_interceptor", [True, False]) +def test_update_cluster_rest_interceptors(null_interceptor): + transport = transports.CloudRedisClusterRestTransport( + credentials=ga_credentials.AnonymousCredentials(), + interceptor=None + if null_interceptor + else transports.CloudRedisClusterRestInterceptor(), + ) + client = CloudRedisClusterClient(transport=transport) + + with ( + mock.patch.object(type(client.transport._session), "request") as req, + mock.patch.object(path_template, "transcode") as transcode, + mock.patch.object(operation.Operation, "_set_result_from_operation"), + mock.patch.object( + transports.CloudRedisClusterRestInterceptor, "post_update_cluster" + ) as post, + mock.patch.object( + transports.CloudRedisClusterRestInterceptor, + "post_update_cluster_with_metadata", + ) as post_with_metadata, + mock.patch.object( + transports.CloudRedisClusterRestInterceptor, "pre_update_cluster" + ) as pre, + ): + pre.assert_not_called() + post.assert_not_called() + post_with_metadata.assert_not_called() + pb_message = cloud_redis_cluster.UpdateClusterRequest.pb( + cloud_redis_cluster.UpdateClusterRequest() + ) + 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 = json_format.MessageToJson(operations_pb2.Operation()) + req.return_value.content = return_value + + request = cloud_redis_cluster.UpdateClusterRequest() + metadata = [ + ("key", "val"), + ("cephalopod", "squid"), + ] + pre.return_value = request, metadata + post.return_value = operations_pb2.Operation() + post_with_metadata.return_value = operations_pb2.Operation(), metadata + + client.update_cluster( + request, + metadata=[ + ("key", "val"), + ("cephalopod", "squid"), + ], + ) + + pre.assert_called_once() + post.assert_called_once() + post_with_metadata.assert_called_once() + + +def test_update_acl_policy_rest_bad_request( + request_type=cloud_redis_cluster.UpdateAclPolicyRequest, +): + client = CloudRedisClusterClient( + credentials=ga_credentials.AnonymousCredentials(), transport="rest" + ) + # send a request that will satisfy transcoding + request_init = { + "acl_policy": {"name": "projects/sample1/locations/sample2/aclPolicies/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_acl_policy(request) + + +@pytest.mark.parametrize( + "request_type", + [ + cloud_redis_cluster.UpdateAclPolicyRequest, + dict, + ], +) +def test_update_acl_policy_rest_call_success(request_type): + client = CloudRedisClusterClient( + credentials=ga_credentials.AnonymousCredentials(), transport="rest" + ) + + # send a request that will satisfy transcoding + request_init = { + "acl_policy": {"name": "projects/sample1/locations/sample2/aclPolicies/sample3"} + } + request_init["acl_policy"] = { + "name": "projects/sample1/locations/sample2/aclPolicies/sample3", + "rules": [{"username": "username_value", "rule": "rule_value"}], + "state": 1, + "etag": "etag_value", + "cluster_acl_policy_attachments": [ + { + "cluster": "cluster_value", + "acl_policy_revision_statuses": [ + { + "acl_policy_revision": "acl_policy_revision_value", + "acl_policy_revision_number": 2773, + "state": 1, + "error_message": "error_message_value", + } + ], + } + ], + "create_time": {"seconds": 751, "nanos": 543}, + "update_time": {}, + } + # 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 = cloud_redis_cluster.UpdateAclPolicyRequest.meta.fields["acl_policy"] + + 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["acl_policy"].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["acl_policy"][field])): + del request_init["acl_policy"][field][i][subfield] + else: + del request_init["acl_policy"][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 = operations_pb2.Operation(name="operations/spam") + + # 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.update_acl_policy(request) + + # Establish that the response is the type that we expect. + json_return_value = json_format.MessageToJson(return_value) + + +@pytest.mark.parametrize("null_interceptor", [True, False]) +def test_update_acl_policy_rest_interceptors(null_interceptor): + transport = transports.CloudRedisClusterRestTransport( + credentials=ga_credentials.AnonymousCredentials(), + interceptor=None + if null_interceptor + else transports.CloudRedisClusterRestInterceptor(), + ) + client = CloudRedisClusterClient(transport=transport) + + with ( + mock.patch.object(type(client.transport._session), "request") as req, + mock.patch.object(path_template, "transcode") as transcode, + mock.patch.object(operation.Operation, "_set_result_from_operation"), + mock.patch.object( + transports.CloudRedisClusterRestInterceptor, "post_update_acl_policy" + ) as post, + mock.patch.object( + transports.CloudRedisClusterRestInterceptor, + "post_update_acl_policy_with_metadata", + ) as post_with_metadata, + mock.patch.object( + transports.CloudRedisClusterRestInterceptor, "pre_update_acl_policy" + ) as pre, + ): + pre.assert_not_called() + post.assert_not_called() + post_with_metadata.assert_not_called() + pb_message = cloud_redis_cluster.UpdateAclPolicyRequest.pb( + cloud_redis_cluster.UpdateAclPolicyRequest() + ) + 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 = json_format.MessageToJson(operations_pb2.Operation()) + req.return_value.content = return_value + + request = cloud_redis_cluster.UpdateAclPolicyRequest() + metadata = [ + ("key", "val"), + ("cephalopod", "squid"), + ] + pre.return_value = request, metadata + post.return_value = operations_pb2.Operation() + post_with_metadata.return_value = operations_pb2.Operation(), metadata + + client.update_acl_policy( + request, + metadata=[ + ("key", "val"), + ("cephalopod", "squid"), + ], + ) + + pre.assert_called_once() + post.assert_called_once() + post_with_metadata.assert_called_once() + + +def test_delete_cluster_rest_bad_request( + request_type=cloud_redis_cluster.DeleteClusterRequest, +): + client = CloudRedisClusterClient( + credentials=ga_credentials.AnonymousCredentials(), transport="rest" + ) + # send a request that will satisfy transcoding + request_init = {"name": "projects/sample1/locations/sample2/clusters/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_cluster(request) + + +@pytest.mark.parametrize( + "request_type", + [ + cloud_redis_cluster.DeleteClusterRequest, + dict, + ], +) +def test_delete_cluster_rest_call_success(request_type): + client = CloudRedisClusterClient( + credentials=ga_credentials.AnonymousCredentials(), transport="rest" + ) + + # send a request that will satisfy transcoding + request_init = {"name": "projects/sample1/locations/sample2/clusters/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 = operations_pb2.Operation(name="operations/spam") + + # 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.delete_cluster(request) + + # Establish that the response is the type that we expect. + json_return_value = json_format.MessageToJson(return_value) + + +@pytest.mark.parametrize("null_interceptor", [True, False]) +def test_delete_cluster_rest_interceptors(null_interceptor): + transport = transports.CloudRedisClusterRestTransport( + credentials=ga_credentials.AnonymousCredentials(), + interceptor=None + if null_interceptor + else transports.CloudRedisClusterRestInterceptor(), + ) + client = CloudRedisClusterClient(transport=transport) + + with ( + mock.patch.object(type(client.transport._session), "request") as req, + mock.patch.object(path_template, "transcode") as transcode, + mock.patch.object(operation.Operation, "_set_result_from_operation"), + mock.patch.object( + transports.CloudRedisClusterRestInterceptor, "post_delete_cluster" + ) as post, + mock.patch.object( + transports.CloudRedisClusterRestInterceptor, + "post_delete_cluster_with_metadata", + ) as post_with_metadata, + mock.patch.object( + transports.CloudRedisClusterRestInterceptor, "pre_delete_cluster" + ) as pre, + ): + pre.assert_not_called() + post.assert_not_called() + post_with_metadata.assert_not_called() + pb_message = cloud_redis_cluster.DeleteClusterRequest.pb( + cloud_redis_cluster.DeleteClusterRequest() + ) + 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 = json_format.MessageToJson(operations_pb2.Operation()) + req.return_value.content = return_value + + request = cloud_redis_cluster.DeleteClusterRequest() + metadata = [ + ("key", "val"), + ("cephalopod", "squid"), + ] + pre.return_value = request, metadata + post.return_value = operations_pb2.Operation() + post_with_metadata.return_value = operations_pb2.Operation(), metadata + + client.delete_cluster( + request, + metadata=[ + ("key", "val"), + ("cephalopod", "squid"), + ], + ) + + pre.assert_called_once() + post.assert_called_once() + post_with_metadata.assert_called_once() + + +def test_delete_acl_policy_rest_bad_request( + request_type=cloud_redis_cluster.DeleteAclPolicyRequest, +): + client = CloudRedisClusterClient( + credentials=ga_credentials.AnonymousCredentials(), transport="rest" + ) + # send a request that will satisfy transcoding + request_init = {"name": "projects/sample1/locations/sample2/aclPolicies/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_acl_policy(request) + + +@pytest.mark.parametrize( + "request_type", + [ + cloud_redis_cluster.DeleteAclPolicyRequest, + dict, + ], +) +def test_delete_acl_policy_rest_call_success(request_type): + client = CloudRedisClusterClient( + credentials=ga_credentials.AnonymousCredentials(), transport="rest" ) - # Mock the actual call, and fake the request. - with mock.patch.object(type(client.transport.export_backup), "__call__") as call: - # Designate an appropriate return value for the call. - call.return_value = grpc_helpers_async.FakeUnaryUnaryCall( - operations_pb2.Operation(name="operations/spam") + # send a request that will satisfy transcoding + request_init = {"name": "projects/sample1/locations/sample2/aclPolicies/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 = operations_pb2.Operation(name="operations/spam") + + # 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.delete_acl_policy(request) + + # Establish that the response is the type that we expect. + json_return_value = json_format.MessageToJson(return_value) + + +@pytest.mark.parametrize("null_interceptor", [True, False]) +def test_delete_acl_policy_rest_interceptors(null_interceptor): + transport = transports.CloudRedisClusterRestTransport( + credentials=ga_credentials.AnonymousCredentials(), + interceptor=None + if null_interceptor + else transports.CloudRedisClusterRestInterceptor(), + ) + client = CloudRedisClusterClient(transport=transport) + + with ( + mock.patch.object(type(client.transport._session), "request") as req, + mock.patch.object(path_template, "transcode") as transcode, + mock.patch.object(operation.Operation, "_set_result_from_operation"), + mock.patch.object( + transports.CloudRedisClusterRestInterceptor, "post_delete_acl_policy" + ) as post, + mock.patch.object( + transports.CloudRedisClusterRestInterceptor, + "post_delete_acl_policy_with_metadata", + ) as post_with_metadata, + mock.patch.object( + transports.CloudRedisClusterRestInterceptor, "pre_delete_acl_policy" + ) as pre, + ): + pre.assert_not_called() + post.assert_not_called() + post_with_metadata.assert_not_called() + pb_message = cloud_redis_cluster.DeleteAclPolicyRequest.pb( + cloud_redis_cluster.DeleteAclPolicyRequest() ) - await client.export_backup(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 = cloud_redis_cluster.ExportBackupRequest() - 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 = json_format.MessageToJson(operations_pb2.Operation()) + req.return_value.content = return_value + + request = cloud_redis_cluster.DeleteAclPolicyRequest() + metadata = [ + ("key", "val"), + ("cephalopod", "squid"), + ] + pre.return_value = request, metadata + post.return_value = operations_pb2.Operation() + post_with_metadata.return_value = operations_pb2.Operation(), metadata + client.delete_acl_policy( + request, + metadata=[ + ("key", "val"), + ("cephalopod", "squid"), + ], + ) -# 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_backup_cluster_empty_call_grpc_asyncio(): - client = CloudRedisClusterAsyncClient( - credentials=async_anonymous_credentials(), - transport="grpc_asyncio", + pre.assert_called_once() + post.assert_called_once() + post_with_metadata.assert_called_once() + + +def test_get_acl_policy_revision_rest_bad_request( + request_type=cloud_redis_cluster.GetAclPolicyRevisionRequest, +): + client = CloudRedisClusterClient( + credentials=ga_credentials.AnonymousCredentials(), transport="rest" + ) + # send a request that will satisfy transcoding + request_init = { + "name": "projects/sample1/locations/sample2/aclPolicies/sample3/revisions/sample4" + } + 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_acl_policy_revision(request) + + +@pytest.mark.parametrize( + "request_type", + [ + cloud_redis_cluster.GetAclPolicyRevisionRequest, + dict, + ], +) +def test_get_acl_policy_revision_rest_call_success(request_type): + client = CloudRedisClusterClient( + credentials=ga_credentials.AnonymousCredentials(), transport="rest" ) - # Mock the actual call, and fake the request. - with mock.patch.object(type(client.transport.backup_cluster), "__call__") as call: - # Designate an appropriate return value for the call. - call.return_value = grpc_helpers_async.FakeUnaryUnaryCall( - operations_pb2.Operation(name="operations/spam") + # send a request that will satisfy transcoding + request_init = { + "name": "projects/sample1/locations/sample2/aclPolicies/sample3/revisions/sample4" + } + 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 = cloud_redis_cluster.AclPolicyRevision( + name="name_value", + revision_number=1623, + attached_clusters=["attached_clusters_value"], ) - await client.backup_cluster(request=None) - # Establish that the underlying stub method was called. - call.assert_called() - _, args, _ = call.mock_calls[0] - request_msg = cloud_redis_cluster.BackupClusterRequest() - assert args[0] == request_msg + # 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 = cloud_redis_cluster.AclPolicyRevision.pb(return_value) + json_return_value = json_format.MessageToJson(return_value) + response_value.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_acl_policy_revision(request) + + # Establish that the response is the type that we expect. + assert isinstance(response, cloud_redis_cluster.AclPolicyRevision) + assert response.name == "name_value" + assert response.revision_number == 1623 + assert response.attached_clusters == ["attached_clusters_value"] + + +@pytest.mark.parametrize("null_interceptor", [True, False]) +def test_get_acl_policy_revision_rest_interceptors(null_interceptor): + transport = transports.CloudRedisClusterRestTransport( + credentials=ga_credentials.AnonymousCredentials(), + interceptor=None + if null_interceptor + else transports.CloudRedisClusterRestInterceptor(), + ) + client = CloudRedisClusterClient(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.CloudRedisClusterRestInterceptor, "post_get_acl_policy_revision" + ) as post, + mock.patch.object( + transports.CloudRedisClusterRestInterceptor, + "post_get_acl_policy_revision_with_metadata", + ) as post_with_metadata, + mock.patch.object( + transports.CloudRedisClusterRestInterceptor, "pre_get_acl_policy_revision" + ) as pre, + ): + pre.assert_not_called() + post.assert_not_called() + post_with_metadata.assert_not_called() + pb_message = cloud_redis_cluster.GetAclPolicyRevisionRequest.pb( + cloud_redis_cluster.GetAclPolicyRevisionRequest() + ) + 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 = cloud_redis_cluster.AclPolicyRevision.to_json( + cloud_redis_cluster.AclPolicyRevision() + ) + req.return_value.content = return_value + + request = cloud_redis_cluster.GetAclPolicyRevisionRequest() + metadata = [ + ("key", "val"), + ("cephalopod", "squid"), + ] + pre.return_value = request, metadata + post.return_value = cloud_redis_cluster.AclPolicyRevision() + post_with_metadata.return_value = ( + cloud_redis_cluster.AclPolicyRevision(), + metadata, + ) + client.get_acl_policy_revision( + request, + metadata=[ + ("key", "val"), + ("cephalopod", "squid"), + ], + ) -def test_transport_kind_rest(): - transport = CloudRedisClusterClient.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_list_clusters_rest_bad_request( - request_type=cloud_redis_cluster.ListClustersRequest, +def test_list_acl_policy_revisions_rest_bad_request( + request_type=cloud_redis_cluster.ListAclPolicyRevisionsRequest, ): client = CloudRedisClusterClient( credentials=ga_credentials.AnonymousCredentials(), transport="rest" ) # send a request that will satisfy transcoding - request_init = {"parent": "projects/sample1/locations/sample2"} + request_init = {"parent": "projects/sample1/locations/sample2/aclPolicies/sample3"} request = request_type(**request_init) # Mock the http request call within the method and fake a BadRequest error. @@ -15173,29 +21794,29 @@ def test_list_clusters_rest_bad_request( response_value.request = mock.Mock() req.return_value = response_value req.return_value.headers = {"header-1": "value-1", "header-2": "value-2"} - client.list_clusters(request) + client.list_acl_policy_revisions(request) @pytest.mark.parametrize( "request_type", [ - cloud_redis_cluster.ListClustersRequest, + cloud_redis_cluster.ListAclPolicyRevisionsRequest, dict, ], ) -def test_list_clusters_rest_call_success(request_type): +def test_list_acl_policy_revisions_rest_call_success(request_type): client = CloudRedisClusterClient( credentials=ga_credentials.AnonymousCredentials(), transport="rest" ) # send a request that will satisfy transcoding - request_init = {"parent": "projects/sample1/locations/sample2"} + request_init = {"parent": "projects/sample1/locations/sample2/aclPolicies/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 = cloud_redis_cluster.ListClustersResponse( + return_value = cloud_redis_cluster.ListAclPolicyRevisionsResponse( next_page_token="next_page_token_value", unreachable=["unreachable_value"], ) @@ -15205,21 +21826,23 @@ def test_list_clusters_rest_call_success(request_type): response_value.status_code = 200 # Convert return value to protobuf type - return_value = cloud_redis_cluster.ListClustersResponse.pb(return_value) + return_value = cloud_redis_cluster.ListAclPolicyRevisionsResponse.pb( + return_value + ) json_return_value = json_format.MessageToJson(return_value) response_value.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_clusters(request) + response = client.list_acl_policy_revisions(request) # Establish that the response is the type that we expect. - assert isinstance(response, pagers.ListClustersPager) + assert isinstance(response, pagers.ListAclPolicyRevisionsPager) assert response.next_page_token == "next_page_token_value" assert response.unreachable == ["unreachable_value"] @pytest.mark.parametrize("null_interceptor", [True, False]) -def test_list_clusters_rest_interceptors(null_interceptor): +def test_list_acl_policy_revisions_rest_interceptors(null_interceptor): transport = transports.CloudRedisClusterRestTransport( credentials=ga_credentials.AnonymousCredentials(), interceptor=None @@ -15232,21 +21855,22 @@ def test_list_clusters_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.CloudRedisClusterRestInterceptor, "post_list_clusters" + transports.CloudRedisClusterRestInterceptor, + "post_list_acl_policy_revisions", ) as post, mock.patch.object( transports.CloudRedisClusterRestInterceptor, - "post_list_clusters_with_metadata", + "post_list_acl_policy_revisions_with_metadata", ) as post_with_metadata, mock.patch.object( - transports.CloudRedisClusterRestInterceptor, "pre_list_clusters" + transports.CloudRedisClusterRestInterceptor, "pre_list_acl_policy_revisions" ) as pre, ): pre.assert_not_called() post.assert_not_called() post_with_metadata.assert_not_called() - pb_message = cloud_redis_cluster.ListClustersRequest.pb( - cloud_redis_cluster.ListClustersRequest() + pb_message = cloud_redis_cluster.ListAclPolicyRevisionsRequest.pb( + cloud_redis_cluster.ListAclPolicyRevisionsRequest() ) transcode.return_value = { "method": "post", @@ -15258,24 +21882,24 @@ def test_list_clusters_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 = cloud_redis_cluster.ListClustersResponse.to_json( - cloud_redis_cluster.ListClustersResponse() + return_value = cloud_redis_cluster.ListAclPolicyRevisionsResponse.to_json( + cloud_redis_cluster.ListAclPolicyRevisionsResponse() ) req.return_value.content = return_value - request = cloud_redis_cluster.ListClustersRequest() + request = cloud_redis_cluster.ListAclPolicyRevisionsRequest() metadata = [ ("key", "val"), ("cephalopod", "squid"), ] pre.return_value = request, metadata - post.return_value = cloud_redis_cluster.ListClustersResponse() + post.return_value = cloud_redis_cluster.ListAclPolicyRevisionsResponse() post_with_metadata.return_value = ( - cloud_redis_cluster.ListClustersResponse(), + cloud_redis_cluster.ListAclPolicyRevisionsResponse(), metadata, ) - client.list_clusters( + client.list_acl_policy_revisions( request, metadata=[ ("key", "val"), @@ -15288,8 +21912,8 @@ def test_list_clusters_rest_interceptors(null_interceptor): post_with_metadata.assert_called_once() -def test_list_acl_policies_rest_bad_request( - request_type=cloud_redis_cluster.ListAclPoliciesRequest, +def test_create_cluster_rest_bad_request( + request_type=cloud_redis_cluster.CreateClusterRequest, ): client = CloudRedisClusterClient( credentials=ga_credentials.AnonymousCredentials(), transport="rest" @@ -15311,53 +21935,230 @@ def test_list_acl_policies_rest_bad_request( response_value.request = mock.Mock() req.return_value = response_value req.return_value.headers = {"header-1": "value-1", "header-2": "value-2"} - client.list_acl_policies(request) + client.create_cluster(request) @pytest.mark.parametrize( "request_type", [ - cloud_redis_cluster.ListAclPoliciesRequest, + cloud_redis_cluster.CreateClusterRequest, dict, ], ) -def test_list_acl_policies_rest_call_success(request_type): +def test_create_cluster_rest_call_success(request_type): client = CloudRedisClusterClient( credentials=ga_credentials.AnonymousCredentials(), transport="rest" ) # send a request that will satisfy transcoding request_init = {"parent": "projects/sample1/locations/sample2"} + request_init["cluster"] = { + "gcs_source": {"uris": ["uris_value1", "uris_value2"]}, + "managed_backup_source": {"backup": "backup_value"}, + "name": "name_value", + "create_time": {"seconds": 751, "nanos": 543}, + "state": 1, + "uid": "uid_value", + "replica_count": 1384, + "authorization_mode": 1, + "transit_encryption_mode": 1, + "size_gb": 739, + "shard_count": 1178, + "psc_configs": [{"network": "network_value"}], + "discovery_endpoints": [ + {"address": "address_value", "port": 453, "psc_config": {}} + ], + "psc_connections": [ + { + "psc_connection_id": "psc_connection_id_value", + "address": "address_value", + "forwarding_rule": "forwarding_rule_value", + "project_id": "project_id_value", + "network": "network_value", + "service_attachment": "service_attachment_value", + "psc_connection_status": 1, + "connection_type": 1, + } + ], + "state_info": { + "update_info": {"target_shard_count": 1920, "target_replica_count": 2126} + }, + "node_type": 1, + "persistence_config": { + "mode": 1, + "rdb_config": {"rdb_snapshot_period": 1, "rdb_snapshot_start_time": {}}, + "aof_config": {"append_fsync": 1}, + }, + "redis_configs": {}, + "precise_size_gb": 0.15810000000000002, + "zone_distribution_config": {"mode": 1, "zone": "zone_value"}, + "cross_cluster_replication_config": { + "cluster_role": 1, + "primary_cluster": {"cluster": "cluster_value", "uid": "uid_value"}, + "secondary_clusters": {}, + "update_time": {}, + "membership": {"primary_cluster": {}, "secondary_clusters": {}}, + }, + "deletion_protection_enabled": True, + "maintenance_policy": { + "create_time": {}, + "update_time": {}, + "weekly_maintenance_window": [ + { + "day": 1, + "start_time": { + "hours": 561, + "minutes": 773, + "seconds": 751, + "nanos": 543, + }, + } + ], + }, + "maintenance_schedule": {"start_time": {}, "end_time": {}}, + "psc_service_attachments": [ + {"service_attachment": "service_attachment_value", "connection_type": 1} + ], + "cluster_endpoints": [ + { + "connections": [ + { + "psc_auto_connection": { + "psc_connection_id": "psc_connection_id_value", + "address": "address_value", + "forwarding_rule": "forwarding_rule_value", + "project_id": "project_id_value", + "network": "network_value", + "service_attachment": "service_attachment_value", + "psc_connection_status": 1, + "connection_type": 1, + }, + "psc_connection": {}, + } + ] + } + ], + "backup_collection": "backup_collection_value", + "kms_key": "kms_key_value", + "automated_backup_config": { + "fixed_frequency_schedule": {"start_time": {}}, + "automated_backup_mode": 1, + "retention": {"seconds": 751, "nanos": 543}, + }, + "encryption_info": { + "encryption_type": 1, + "kms_key_versions": ["kms_key_versions_value1", "kms_key_versions_value2"], + "kms_key_primary_state": 1, + "last_update_time": {}, + }, + "async_cluster_endpoints_deletion_enabled": True, + "server_ca_mode": 1, + "server_ca_pool": "server_ca_pool_value", + "rotate_server_certificate": True, + "acl_policy": "acl_policy_value", + "acl_policy_info": { + "applied_acl_policy": "applied_acl_policy_value", + "applied_acl_policy_revision": "applied_acl_policy_revision_value", + "applied_acl_policy_revision_number": 3603, + "acl_policy_revision_statuses": [ + { + "acl_policy_revision": "acl_policy_revision_value", + "acl_policy_revision_number": 2773, + "state": 1, + "error_message": "error_message_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 = cloud_redis_cluster.CreateClusterRequest.meta.fields["cluster"] + + 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["cluster"].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["cluster"][field])): + del request_init["cluster"][field][i][subfield] + else: + del request_init["cluster"][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 = cloud_redis_cluster.ListAclPoliciesResponse( - next_page_token="next_page_token_value", - unreachable=["unreachable_value"], - ) + return_value = operations_pb2.Operation(name="operations/spam") # 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 = cloud_redis_cluster.ListAclPoliciesResponse.pb(return_value) json_return_value = json_format.MessageToJson(return_value) response_value.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_acl_policies(request) + response = client.create_cluster(request) # Establish that the response is the type that we expect. - assert isinstance(response, pagers.ListAclPoliciesPager) - assert response.next_page_token == "next_page_token_value" - assert response.unreachable == ["unreachable_value"] + json_return_value = json_format.MessageToJson(return_value) @pytest.mark.parametrize("null_interceptor", [True, False]) -def test_list_acl_policies_rest_interceptors(null_interceptor): +def test_create_cluster_rest_interceptors(null_interceptor): transport = transports.CloudRedisClusterRestTransport( credentials=ga_credentials.AnonymousCredentials(), interceptor=None @@ -15369,22 +22170,23 @@ def test_list_acl_policies_rest_interceptors(null_interceptor): with ( mock.patch.object(type(client.transport._session), "request") as req, mock.patch.object(path_template, "transcode") as transcode, + mock.patch.object(operation.Operation, "_set_result_from_operation"), mock.patch.object( - transports.CloudRedisClusterRestInterceptor, "post_list_acl_policies" + transports.CloudRedisClusterRestInterceptor, "post_create_cluster" ) as post, mock.patch.object( transports.CloudRedisClusterRestInterceptor, - "post_list_acl_policies_with_metadata", + "post_create_cluster_with_metadata", ) as post_with_metadata, mock.patch.object( - transports.CloudRedisClusterRestInterceptor, "pre_list_acl_policies" + transports.CloudRedisClusterRestInterceptor, "pre_create_cluster" ) as pre, ): pre.assert_not_called() post.assert_not_called() post_with_metadata.assert_not_called() - pb_message = cloud_redis_cluster.ListAclPoliciesRequest.pb( - cloud_redis_cluster.ListAclPoliciesRequest() + pb_message = cloud_redis_cluster.CreateClusterRequest.pb( + cloud_redis_cluster.CreateClusterRequest() ) transcode.return_value = { "method": "post", @@ -15396,24 +22198,19 @@ def test_list_acl_policies_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 = cloud_redis_cluster.ListAclPoliciesResponse.to_json( - cloud_redis_cluster.ListAclPoliciesResponse() - ) + return_value = json_format.MessageToJson(operations_pb2.Operation()) req.return_value.content = return_value - request = cloud_redis_cluster.ListAclPoliciesRequest() + request = cloud_redis_cluster.CreateClusterRequest() metadata = [ ("key", "val"), ("cephalopod", "squid"), ] pre.return_value = request, metadata - post.return_value = cloud_redis_cluster.ListAclPoliciesResponse() - post_with_metadata.return_value = ( - cloud_redis_cluster.ListAclPoliciesResponse(), - metadata, - ) + post.return_value = operations_pb2.Operation() + post_with_metadata.return_value = operations_pb2.Operation(), metadata - client.list_acl_policies( + client.create_cluster( request, metadata=[ ("key", "val"), @@ -15426,14 +22223,14 @@ def test_list_acl_policies_rest_interceptors(null_interceptor): post_with_metadata.assert_called_once() -def test_get_cluster_rest_bad_request( - request_type=cloud_redis_cluster.GetClusterRequest, +def test_create_acl_policy_rest_bad_request( + request_type=cloud_redis_cluster.CreateAclPolicyRequest, ): client = CloudRedisClusterClient( credentials=ga_credentials.AnonymousCredentials(), transport="rest" ) # send a request that will satisfy transcoding - request_init = {"name": "projects/sample1/locations/sample2/clusters/sample3"} + 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. @@ -15449,199 +22246,111 @@ def test_get_cluster_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_cluster(request) + client.create_acl_policy(request) @pytest.mark.parametrize( "request_type", [ - cloud_redis_cluster.GetClusterRequest, + cloud_redis_cluster.CreateAclPolicyRequest, dict, ], ) -def test_get_cluster_rest_call_success(request_type): +def test_create_acl_policy_rest_call_success(request_type): client = CloudRedisClusterClient( credentials=ga_credentials.AnonymousCredentials(), transport="rest" ) # send a request that will satisfy transcoding - request_init = {"name": "projects/sample1/locations/sample2/clusters/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 = cloud_redis_cluster.Cluster( - name="name_value", - state=cloud_redis_cluster.Cluster.State.CREATING, - uid="uid_value", - replica_count=1384, - authorization_mode=cloud_redis_cluster.AuthorizationMode.AUTH_MODE_IAM_AUTH, - transit_encryption_mode=cloud_redis_cluster.TransitEncryptionMode.TRANSIT_ENCRYPTION_MODE_DISABLED, - size_gb=739, - shard_count=1178, - node_type=cloud_redis_cluster.NodeType.REDIS_SHARED_CORE_NANO, - precise_size_gb=0.15810000000000002, - deletion_protection_enabled=True, - backup_collection="backup_collection_value", - kms_key="kms_key_value", - async_cluster_endpoints_deletion_enabled=True, - server_ca_mode=cloud_redis_cluster.ServerCaMode.SERVER_CA_MODE_GOOGLE_MANAGED_PER_INSTANCE_CA, - server_ca_pool="server_ca_pool_value", - rotate_server_certificate=True, - acl_policy="acl_policy_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 = cloud_redis_cluster.Cluster.pb(return_value) - json_return_value = json_format.MessageToJson(return_value) - response_value.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_cluster(request) - - # Establish that the response is the type that we expect. - assert isinstance(response, cloud_redis_cluster.Cluster) - assert response.name == "name_value" - assert response.state == cloud_redis_cluster.Cluster.State.CREATING - assert response.uid == "uid_value" - assert response.replica_count == 1384 - assert ( - response.authorization_mode - == cloud_redis_cluster.AuthorizationMode.AUTH_MODE_IAM_AUTH - ) - assert ( - response.transit_encryption_mode - == cloud_redis_cluster.TransitEncryptionMode.TRANSIT_ENCRYPTION_MODE_DISABLED - ) - assert response.size_gb == 739 - assert response.shard_count == 1178 - assert response.node_type == cloud_redis_cluster.NodeType.REDIS_SHARED_CORE_NANO - assert math.isclose(response.precise_size_gb, 0.15810000000000002, rel_tol=1e-6) - assert response.deletion_protection_enabled is True - assert response.backup_collection == "backup_collection_value" - assert response.kms_key == "kms_key_value" - assert response.async_cluster_endpoints_deletion_enabled is True - assert ( - response.server_ca_mode - == cloud_redis_cluster.ServerCaMode.SERVER_CA_MODE_GOOGLE_MANAGED_PER_INSTANCE_CA - ) - assert response.server_ca_pool == "server_ca_pool_value" - assert response.rotate_server_certificate is True - assert response.acl_policy == "acl_policy_value" - - -@pytest.mark.parametrize("null_interceptor", [True, False]) -def test_get_cluster_rest_interceptors(null_interceptor): - transport = transports.CloudRedisClusterRestTransport( - credentials=ga_credentials.AnonymousCredentials(), - interceptor=None - if null_interceptor - else transports.CloudRedisClusterRestInterceptor(), - ) - client = CloudRedisClusterClient(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.CloudRedisClusterRestInterceptor, "post_get_cluster" - ) as post, - mock.patch.object( - transports.CloudRedisClusterRestInterceptor, - "post_get_cluster_with_metadata", - ) as post_with_metadata, - mock.patch.object( - transports.CloudRedisClusterRestInterceptor, "pre_get_cluster" - ) as pre, - ): - pre.assert_not_called() - post.assert_not_called() - post_with_metadata.assert_not_called() - pb_message = cloud_redis_cluster.GetClusterRequest.pb( - cloud_redis_cluster.GetClusterRequest() - ) - 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 = cloud_redis_cluster.Cluster.to_json( - cloud_redis_cluster.Cluster() - ) - req.return_value.content = return_value - - request = cloud_redis_cluster.GetClusterRequest() - metadata = [ - ("key", "val"), - ("cephalopod", "squid"), - ] - pre.return_value = request, metadata - post.return_value = cloud_redis_cluster.Cluster() - post_with_metadata.return_value = cloud_redis_cluster.Cluster(), metadata + request_init = {"parent": "projects/sample1/locations/sample2"} + request_init["acl_policy"] = { + "name": "name_value", + "rules": [{"username": "username_value", "rule": "rule_value"}], + "state": 1, + "etag": "etag_value", + "cluster_acl_policy_attachments": [ + { + "cluster": "cluster_value", + "acl_policy_revision_statuses": [ + { + "acl_policy_revision": "acl_policy_revision_value", + "acl_policy_revision_number": 2773, + "state": 1, + "error_message": "error_message_value", + } + ], + } + ], + "create_time": {"seconds": 751, "nanos": 543}, + "update_time": {}, + } + # 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 - client.get_cluster( - request, - metadata=[ - ("key", "val"), - ("cephalopod", "squid"), - ], - ) + # Determine if the message type is proto-plus or protobuf + test_field = cloud_redis_cluster.CreateAclPolicyRequest.meta.fields["acl_policy"] - pre.assert_called_once() - post.assert_called_once() - post_with_metadata.assert_called_once() + 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") -def test_get_acl_policy_rest_bad_request( - request_type=cloud_redis_cluster.GetAclPolicyRequest, -): - client = CloudRedisClusterClient( - credentials=ga_credentials.AnonymousCredentials(), transport="rest" - ) - # send a request that will satisfy transcoding - request_init = {"name": "projects/sample1/locations/sample2/aclPolicies/sample3"} - request = request_type(**request_init) + 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 - # 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_acl_policy(request) + 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 = [] -@pytest.mark.parametrize( - "request_type", - [ - cloud_redis_cluster.GetAclPolicyRequest, - dict, - ], -) -def test_get_acl_policy_rest_call_success(request_type): - client = CloudRedisClusterClient( - credentials=ga_credentials.AnonymousCredentials(), transport="rest" - ) + # 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["acl_policy"].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 - # send a request that will satisfy transcoding - request_init = {"name": "projects/sample1/locations/sample2/aclPolicies/sample3"} + 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["acl_policy"][field])): + del request_init["acl_policy"][field][i][subfield] + else: + del request_init["acl_policy"][field][subfield] request = request_type(**request_init) # Mock the http request call within the method and fake a response. @@ -15663,7 +22372,7 @@ def test_get_acl_policy_rest_call_success(request_type): response_value.content = json_return_value.encode("UTF-8") req.return_value = response_value req.return_value.headers = {"header-1": "value-1", "header-2": "value-2"} - response = client.get_acl_policy(request) + response = client.create_acl_policy(request) # Establish that the response is the type that we expect. assert isinstance(response, cloud_redis_cluster.AclPolicy) @@ -15673,7 +22382,7 @@ def test_get_acl_policy_rest_call_success(request_type): @pytest.mark.parametrize("null_interceptor", [True, False]) -def test_get_acl_policy_rest_interceptors(null_interceptor): +def test_create_acl_policy_rest_interceptors(null_interceptor): transport = transports.CloudRedisClusterRestTransport( credentials=ga_credentials.AnonymousCredentials(), interceptor=None @@ -15686,21 +22395,21 @@ def test_get_acl_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.CloudRedisClusterRestInterceptor, "post_get_acl_policy" + transports.CloudRedisClusterRestInterceptor, "post_create_acl_policy" ) as post, mock.patch.object( transports.CloudRedisClusterRestInterceptor, - "post_get_acl_policy_with_metadata", + "post_create_acl_policy_with_metadata", ) as post_with_metadata, mock.patch.object( - transports.CloudRedisClusterRestInterceptor, "pre_get_acl_policy" + transports.CloudRedisClusterRestInterceptor, "pre_create_acl_policy" ) as pre, ): pre.assert_not_called() post.assert_not_called() post_with_metadata.assert_not_called() - pb_message = cloud_redis_cluster.GetAclPolicyRequest.pb( - cloud_redis_cluster.GetAclPolicyRequest() + pb_message = cloud_redis_cluster.CreateAclPolicyRequest.pb( + cloud_redis_cluster.CreateAclPolicyRequest() ) transcode.return_value = { "method": "post", @@ -15717,279 +22426,100 @@ def test_get_acl_policy_rest_interceptors(null_interceptor): ) req.return_value.content = return_value - request = cloud_redis_cluster.GetAclPolicyRequest() - metadata = [ - ("key", "val"), - ("cephalopod", "squid"), - ] - pre.return_value = request, metadata - post.return_value = cloud_redis_cluster.AclPolicy() - post_with_metadata.return_value = cloud_redis_cluster.AclPolicy(), metadata - - client.get_acl_policy( - request, - metadata=[ - ("key", "val"), - ("cephalopod", "squid"), - ], - ) - - pre.assert_called_once() - post.assert_called_once() - post_with_metadata.assert_called_once() - - -def test_update_cluster_rest_bad_request( - request_type=cloud_redis_cluster.UpdateClusterRequest, -): - client = CloudRedisClusterClient( - credentials=ga_credentials.AnonymousCredentials(), transport="rest" - ) - # send a request that will satisfy transcoding - request_init = { - "cluster": {"name": "projects/sample1/locations/sample2/clusters/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_cluster(request) - - -@pytest.mark.parametrize( - "request_type", - [ - cloud_redis_cluster.UpdateClusterRequest, - dict, - ], -) -def test_update_cluster_rest_call_success(request_type): - client = CloudRedisClusterClient( - credentials=ga_credentials.AnonymousCredentials(), transport="rest" - ) - - # send a request that will satisfy transcoding - request_init = { - "cluster": {"name": "projects/sample1/locations/sample2/clusters/sample3"} - } - request_init["cluster"] = { - "gcs_source": {"uris": ["uris_value1", "uris_value2"]}, - "managed_backup_source": {"backup": "backup_value"}, - "name": "projects/sample1/locations/sample2/clusters/sample3", - "create_time": {"seconds": 751, "nanos": 543}, - "state": 1, - "uid": "uid_value", - "replica_count": 1384, - "authorization_mode": 1, - "transit_encryption_mode": 1, - "size_gb": 739, - "shard_count": 1178, - "psc_configs": [{"network": "network_value"}], - "discovery_endpoints": [ - {"address": "address_value", "port": 453, "psc_config": {}} - ], - "psc_connections": [ - { - "psc_connection_id": "psc_connection_id_value", - "address": "address_value", - "forwarding_rule": "forwarding_rule_value", - "project_id": "project_id_value", - "network": "network_value", - "service_attachment": "service_attachment_value", - "psc_connection_status": 1, - "connection_type": 1, - } - ], - "state_info": { - "update_info": {"target_shard_count": 1920, "target_replica_count": 2126} - }, - "node_type": 1, - "persistence_config": { - "mode": 1, - "rdb_config": {"rdb_snapshot_period": 1, "rdb_snapshot_start_time": {}}, - "aof_config": {"append_fsync": 1}, - }, - "redis_configs": {}, - "precise_size_gb": 0.15810000000000002, - "zone_distribution_config": {"mode": 1, "zone": "zone_value"}, - "cross_cluster_replication_config": { - "cluster_role": 1, - "primary_cluster": {"cluster": "cluster_value", "uid": "uid_value"}, - "secondary_clusters": {}, - "update_time": {}, - "membership": {"primary_cluster": {}, "secondary_clusters": {}}, - }, - "deletion_protection_enabled": True, - "maintenance_policy": { - "create_time": {}, - "update_time": {}, - "weekly_maintenance_window": [ - { - "day": 1, - "start_time": { - "hours": 561, - "minutes": 773, - "seconds": 751, - "nanos": 543, - }, - } - ], - }, - "maintenance_schedule": {"start_time": {}, "end_time": {}}, - "psc_service_attachments": [ - {"service_attachment": "service_attachment_value", "connection_type": 1} - ], - "cluster_endpoints": [ - { - "connections": [ - { - "psc_auto_connection": { - "psc_connection_id": "psc_connection_id_value", - "address": "address_value", - "forwarding_rule": "forwarding_rule_value", - "project_id": "project_id_value", - "network": "network_value", - "service_attachment": "service_attachment_value", - "psc_connection_status": 1, - "connection_type": 1, - }, - "psc_connection": {}, - } - ] - } - ], - "backup_collection": "backup_collection_value", - "kms_key": "kms_key_value", - "automated_backup_config": { - "fixed_frequency_schedule": {"start_time": {}}, - "automated_backup_mode": 1, - "retention": {"seconds": 751, "nanos": 543}, - }, - "encryption_info": { - "encryption_type": 1, - "kms_key_versions": ["kms_key_versions_value1", "kms_key_versions_value2"], - "kms_key_primary_state": 1, - "last_update_time": {}, - }, - "async_cluster_endpoints_deletion_enabled": True, - "server_ca_mode": 1, - "server_ca_pool": "server_ca_pool_value", - "rotate_server_certificate": True, - "acl_policy": "acl_policy_value", - "acl_policy_info": { - "applied_acl_policy": "applied_acl_policy_value", - "applied_acl_policy_revision": "applied_acl_policy_revision_value", - "applied_acl_policy_revision_number": 3603, - "acl_policy_revision_statuses": [ - { - "acl_policy_revision": "acl_policy_revision_value", - "acl_policy_revision_number": 2773, - "state": 1, - "error_message": "error_message_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 = cloud_redis_cluster.UpdateClusterRequest.meta.fields["cluster"] + request = cloud_redis_cluster.CreateAclPolicyRequest() + metadata = [ + ("key", "val"), + ("cephalopod", "squid"), + ] + pre.return_value = request, metadata + post.return_value = cloud_redis_cluster.AclPolicy() + post_with_metadata.return_value = cloud_redis_cluster.AclPolicy(), metadata - 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 = [] + client.create_acl_policy( + request, + metadata=[ + ("key", "val"), + ("cephalopod", "squid"), + ], + ) - if hasattr(field, "message") and field.message: - is_field_type_proto_plus_type = not hasattr(field.message, "DESCRIPTOR") + pre.assert_called_once() + post.assert_called_once() + post_with_metadata.assert_called_once() - 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) - ] +def test_get_cluster_certificate_authority_rest_bad_request( + request_type=cloud_redis_cluster.GetClusterCertificateAuthorityRequest, +): + client = CloudRedisClusterClient( + credentials=ga_credentials.AnonymousCredentials(), transport="rest" + ) + # send a request that will satisfy transcoding + request_init = { + "name": "projects/sample1/locations/sample2/clusters/sample3/certificateAuthority" + } + request = request_type(**request_init) - subfields_not_in_runtime = [] + # 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_cluster_certificate_authority(request) - # 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["cluster"].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, - } - ) +@pytest.mark.parametrize( + "request_type", + [ + cloud_redis_cluster.GetClusterCertificateAuthorityRequest, + dict, + ], +) +def test_get_cluster_certificate_authority_rest_call_success(request_type): + client = CloudRedisClusterClient( + credentials=ga_credentials.AnonymousCredentials(), transport="rest" + ) - # 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["cluster"][field])): - del request_init["cluster"][field][i][subfield] - else: - del request_init["cluster"][field][subfield] + # send a request that will satisfy transcoding + request_init = { + "name": "projects/sample1/locations/sample2/clusters/sample3/certificateAuthority" + } 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 = operations_pb2.Operation(name="operations/spam") + return_value = cloud_redis_cluster.CertificateAuthority( + name="name_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 = cloud_redis_cluster.CertificateAuthority.pb(return_value) json_return_value = json_format.MessageToJson(return_value) response_value.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_cluster(request) + response = client.get_cluster_certificate_authority(request) # Establish that the response is the type that we expect. - json_return_value = json_format.MessageToJson(return_value) + assert isinstance(response, cloud_redis_cluster.CertificateAuthority) + assert response.name == "name_value" @pytest.mark.parametrize("null_interceptor", [True, False]) -def test_update_cluster_rest_interceptors(null_interceptor): +def test_get_cluster_certificate_authority_rest_interceptors(null_interceptor): transport = transports.CloudRedisClusterRestTransport( credentials=ga_credentials.AnonymousCredentials(), interceptor=None @@ -16001,23 +22531,24 @@ def test_update_cluster_rest_interceptors(null_interceptor): with ( mock.patch.object(type(client.transport._session), "request") as req, mock.patch.object(path_template, "transcode") as transcode, - mock.patch.object(operation.Operation, "_set_result_from_operation"), mock.patch.object( - transports.CloudRedisClusterRestInterceptor, "post_update_cluster" + transports.CloudRedisClusterRestInterceptor, + "post_get_cluster_certificate_authority", ) as post, mock.patch.object( transports.CloudRedisClusterRestInterceptor, - "post_update_cluster_with_metadata", + "post_get_cluster_certificate_authority_with_metadata", ) as post_with_metadata, mock.patch.object( - transports.CloudRedisClusterRestInterceptor, "pre_update_cluster" + transports.CloudRedisClusterRestInterceptor, + "pre_get_cluster_certificate_authority", ) as pre, ): pre.assert_not_called() post.assert_not_called() post_with_metadata.assert_not_called() - pb_message = cloud_redis_cluster.UpdateClusterRequest.pb( - cloud_redis_cluster.UpdateClusterRequest() + pb_message = cloud_redis_cluster.GetClusterCertificateAuthorityRequest.pb( + cloud_redis_cluster.GetClusterCertificateAuthorityRequest() ) transcode.return_value = { "method": "post", @@ -16029,19 +22560,24 @@ def test_update_cluster_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 = json_format.MessageToJson(operations_pb2.Operation()) + return_value = cloud_redis_cluster.CertificateAuthority.to_json( + cloud_redis_cluster.CertificateAuthority() + ) req.return_value.content = return_value - request = cloud_redis_cluster.UpdateClusterRequest() + request = cloud_redis_cluster.GetClusterCertificateAuthorityRequest() metadata = [ ("key", "val"), ("cephalopod", "squid"), ] pre.return_value = request, metadata - post.return_value = operations_pb2.Operation() - post_with_metadata.return_value = operations_pb2.Operation(), metadata + post.return_value = cloud_redis_cluster.CertificateAuthority() + post_with_metadata.return_value = ( + cloud_redis_cluster.CertificateAuthority(), + metadata, + ) - client.update_cluster( + client.get_cluster_certificate_authority( request, metadata=[ ("key", "val"), @@ -16054,15 +22590,15 @@ def test_update_cluster_rest_interceptors(null_interceptor): post_with_metadata.assert_called_once() -def test_update_acl_policy_rest_bad_request( - request_type=cloud_redis_cluster.UpdateAclPolicyRequest, +def test_get_shared_regional_certificate_authority_rest_bad_request( + request_type=cloud_redis_cluster.GetSharedRegionalCertificateAuthorityRequest, ): client = CloudRedisClusterClient( credentials=ga_credentials.AnonymousCredentials(), transport="rest" ) # send a request that will satisfy transcoding request_init = { - "acl_policy": {"name": "projects/sample1/locations/sample2/aclPolicies/sample3"} + "name": "projects/sample1/locations/sample2/sharedRegionalCertificateAuthority" } request = request_type(**request_init) @@ -16079,135 +22615,55 @@ def test_update_acl_policy_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.update_acl_policy(request) + client.get_shared_regional_certificate_authority(request) @pytest.mark.parametrize( "request_type", [ - cloud_redis_cluster.UpdateAclPolicyRequest, + cloud_redis_cluster.GetSharedRegionalCertificateAuthorityRequest, dict, ], ) -def test_update_acl_policy_rest_call_success(request_type): +def test_get_shared_regional_certificate_authority_rest_call_success(request_type): client = CloudRedisClusterClient( credentials=ga_credentials.AnonymousCredentials(), transport="rest" ) - # send a request that will satisfy transcoding - request_init = { - "acl_policy": {"name": "projects/sample1/locations/sample2/aclPolicies/sample3"} - } - request_init["acl_policy"] = { - "name": "projects/sample1/locations/sample2/aclPolicies/sample3", - "rules": [{"username": "username_value", "rule": "rule_value"}], - "state": 1, - "etag": "etag_value", - "cluster_acl_policy_attachments": [ - { - "cluster": "cluster_value", - "acl_policy_revision_statuses": [ - { - "acl_policy_revision": "acl_policy_revision_value", - "acl_policy_revision_number": 2773, - "state": 1, - "error_message": "error_message_value", - } - ], - } - ], - "create_time": {"seconds": 751, "nanos": 543}, - "update_time": {}, - } - # 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 = cloud_redis_cluster.UpdateAclPolicyRequest.meta.fields["acl_policy"] - - 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["acl_policy"].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["acl_policy"][field])): - del request_init["acl_policy"][field][i][subfield] - else: - del request_init["acl_policy"][field][subfield] + # send a request that will satisfy transcoding + request_init = { + "name": "projects/sample1/locations/sample2/sharedRegionalCertificateAuthority" + } 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 = operations_pb2.Operation(name="operations/spam") + return_value = cloud_redis_cluster.SharedRegionalCertificateAuthority( + name="name_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 = cloud_redis_cluster.SharedRegionalCertificateAuthority.pb( + return_value + ) json_return_value = json_format.MessageToJson(return_value) response_value.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_acl_policy(request) + response = client.get_shared_regional_certificate_authority(request) # Establish that the response is the type that we expect. - json_return_value = json_format.MessageToJson(return_value) + assert isinstance(response, cloud_redis_cluster.SharedRegionalCertificateAuthority) + assert response.name == "name_value" @pytest.mark.parametrize("null_interceptor", [True, False]) -def test_update_acl_policy_rest_interceptors(null_interceptor): +def test_get_shared_regional_certificate_authority_rest_interceptors(null_interceptor): transport = transports.CloudRedisClusterRestTransport( credentials=ga_credentials.AnonymousCredentials(), interceptor=None @@ -16219,23 +22675,26 @@ def test_update_acl_policy_rest_interceptors(null_interceptor): with ( mock.patch.object(type(client.transport._session), "request") as req, mock.patch.object(path_template, "transcode") as transcode, - mock.patch.object(operation.Operation, "_set_result_from_operation"), mock.patch.object( - transports.CloudRedisClusterRestInterceptor, "post_update_acl_policy" + transports.CloudRedisClusterRestInterceptor, + "post_get_shared_regional_certificate_authority", ) as post, mock.patch.object( transports.CloudRedisClusterRestInterceptor, - "post_update_acl_policy_with_metadata", + "post_get_shared_regional_certificate_authority_with_metadata", ) as post_with_metadata, mock.patch.object( - transports.CloudRedisClusterRestInterceptor, "pre_update_acl_policy" + transports.CloudRedisClusterRestInterceptor, + "pre_get_shared_regional_certificate_authority", ) as pre, ): pre.assert_not_called() post.assert_not_called() post_with_metadata.assert_not_called() - pb_message = cloud_redis_cluster.UpdateAclPolicyRequest.pb( - cloud_redis_cluster.UpdateAclPolicyRequest() + pb_message = ( + cloud_redis_cluster.GetSharedRegionalCertificateAuthorityRequest.pb( + cloud_redis_cluster.GetSharedRegionalCertificateAuthorityRequest() + ) ) transcode.return_value = { "method": "post", @@ -16247,19 +22706,24 @@ def test_update_acl_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 = json_format.MessageToJson(operations_pb2.Operation()) + return_value = cloud_redis_cluster.SharedRegionalCertificateAuthority.to_json( + cloud_redis_cluster.SharedRegionalCertificateAuthority() + ) req.return_value.content = return_value - request = cloud_redis_cluster.UpdateAclPolicyRequest() + request = cloud_redis_cluster.GetSharedRegionalCertificateAuthorityRequest() metadata = [ ("key", "val"), ("cephalopod", "squid"), ] pre.return_value = request, metadata - post.return_value = operations_pb2.Operation() - post_with_metadata.return_value = operations_pb2.Operation(), metadata + post.return_value = cloud_redis_cluster.SharedRegionalCertificateAuthority() + post_with_metadata.return_value = ( + cloud_redis_cluster.SharedRegionalCertificateAuthority(), + metadata, + ) - client.update_acl_policy( + client.get_shared_regional_certificate_authority( request, metadata=[ ("key", "val"), @@ -16272,8 +22736,8 @@ def test_update_acl_policy_rest_interceptors(null_interceptor): post_with_metadata.assert_called_once() -def test_delete_cluster_rest_bad_request( - request_type=cloud_redis_cluster.DeleteClusterRequest, +def test_reschedule_cluster_maintenance_rest_bad_request( + request_type=cloud_redis_cluster.RescheduleClusterMaintenanceRequest, ): client = CloudRedisClusterClient( credentials=ga_credentials.AnonymousCredentials(), transport="rest" @@ -16295,17 +22759,17 @@ def test_delete_cluster_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_cluster(request) + client.reschedule_cluster_maintenance(request) @pytest.mark.parametrize( "request_type", [ - cloud_redis_cluster.DeleteClusterRequest, + cloud_redis_cluster.RescheduleClusterMaintenanceRequest, dict, ], ) -def test_delete_cluster_rest_call_success(request_type): +def test_reschedule_cluster_maintenance_rest_call_success(request_type): client = CloudRedisClusterClient( credentials=ga_credentials.AnonymousCredentials(), transport="rest" ) @@ -16326,14 +22790,14 @@ def test_delete_cluster_rest_call_success(request_type): response_value.content = json_return_value.encode("UTF-8") req.return_value = response_value req.return_value.headers = {"header-1": "value-1", "header-2": "value-2"} - response = client.delete_cluster(request) + response = client.reschedule_cluster_maintenance(request) # Establish that the response is the type that we expect. json_return_value = json_format.MessageToJson(return_value) @pytest.mark.parametrize("null_interceptor", [True, False]) -def test_delete_cluster_rest_interceptors(null_interceptor): +def test_reschedule_cluster_maintenance_rest_interceptors(null_interceptor): transport = transports.CloudRedisClusterRestTransport( credentials=ga_credentials.AnonymousCredentials(), interceptor=None @@ -16347,21 +22811,23 @@ def test_delete_cluster_rest_interceptors(null_interceptor): mock.patch.object(path_template, "transcode") as transcode, mock.patch.object(operation.Operation, "_set_result_from_operation"), mock.patch.object( - transports.CloudRedisClusterRestInterceptor, "post_delete_cluster" + transports.CloudRedisClusterRestInterceptor, + "post_reschedule_cluster_maintenance", ) as post, mock.patch.object( transports.CloudRedisClusterRestInterceptor, - "post_delete_cluster_with_metadata", + "post_reschedule_cluster_maintenance_with_metadata", ) as post_with_metadata, mock.patch.object( - transports.CloudRedisClusterRestInterceptor, "pre_delete_cluster" + transports.CloudRedisClusterRestInterceptor, + "pre_reschedule_cluster_maintenance", ) as pre, ): pre.assert_not_called() post.assert_not_called() post_with_metadata.assert_not_called() - pb_message = cloud_redis_cluster.DeleteClusterRequest.pb( - cloud_redis_cluster.DeleteClusterRequest() + pb_message = cloud_redis_cluster.RescheduleClusterMaintenanceRequest.pb( + cloud_redis_cluster.RescheduleClusterMaintenanceRequest() ) transcode.return_value = { "method": "post", @@ -16376,7 +22842,7 @@ def test_delete_cluster_rest_interceptors(null_interceptor): return_value = json_format.MessageToJson(operations_pb2.Operation()) req.return_value.content = return_value - request = cloud_redis_cluster.DeleteClusterRequest() + request = cloud_redis_cluster.RescheduleClusterMaintenanceRequest() metadata = [ ("key", "val"), ("cephalopod", "squid"), @@ -16385,7 +22851,7 @@ def test_delete_cluster_rest_interceptors(null_interceptor): post.return_value = operations_pb2.Operation() post_with_metadata.return_value = operations_pb2.Operation(), metadata - client.delete_cluster( + client.reschedule_cluster_maintenance( request, metadata=[ ("key", "val"), @@ -16398,14 +22864,14 @@ def test_delete_cluster_rest_interceptors(null_interceptor): post_with_metadata.assert_called_once() -def test_delete_acl_policy_rest_bad_request( - request_type=cloud_redis_cluster.DeleteAclPolicyRequest, +def test_list_backup_collections_rest_bad_request( + request_type=cloud_redis_cluster.ListBackupCollectionsRequest, ): client = CloudRedisClusterClient( credentials=ga_credentials.AnonymousCredentials(), transport="rest" ) # send a request that will satisfy transcoding - request_init = {"name": "projects/sample1/locations/sample2/aclPolicies/sample3"} + 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. @@ -16421,45 +22887,55 @@ def test_delete_acl_policy_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_acl_policy(request) + client.list_backup_collections(request) @pytest.mark.parametrize( "request_type", [ - cloud_redis_cluster.DeleteAclPolicyRequest, + cloud_redis_cluster.ListBackupCollectionsRequest, dict, ], ) -def test_delete_acl_policy_rest_call_success(request_type): +def test_list_backup_collections_rest_call_success(request_type): client = CloudRedisClusterClient( credentials=ga_credentials.AnonymousCredentials(), transport="rest" ) # send a request that will satisfy transcoding - request_init = {"name": "projects/sample1/locations/sample2/aclPolicies/sample3"} + 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 = operations_pb2.Operation(name="operations/spam") + return_value = cloud_redis_cluster.ListBackupCollectionsResponse( + next_page_token="next_page_token_value", + unreachable=["unreachable_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 = cloud_redis_cluster.ListBackupCollectionsResponse.pb( + return_value + ) json_return_value = json_format.MessageToJson(return_value) response_value.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_acl_policy(request) + response = client.list_backup_collections(request) # Establish that the response is the type that we expect. - json_return_value = json_format.MessageToJson(return_value) + assert isinstance(response, pagers.ListBackupCollectionsPager) + assert response.next_page_token == "next_page_token_value" + assert response.unreachable == ["unreachable_value"] @pytest.mark.parametrize("null_interceptor", [True, False]) -def test_delete_acl_policy_rest_interceptors(null_interceptor): +def test_list_backup_collections_rest_interceptors(null_interceptor): transport = transports.CloudRedisClusterRestTransport( credentials=ga_credentials.AnonymousCredentials(), interceptor=None @@ -16471,23 +22947,22 @@ def test_delete_acl_policy_rest_interceptors(null_interceptor): with ( mock.patch.object(type(client.transport._session), "request") as req, mock.patch.object(path_template, "transcode") as transcode, - mock.patch.object(operation.Operation, "_set_result_from_operation"), mock.patch.object( - transports.CloudRedisClusterRestInterceptor, "post_delete_acl_policy" + transports.CloudRedisClusterRestInterceptor, "post_list_backup_collections" ) as post, mock.patch.object( transports.CloudRedisClusterRestInterceptor, - "post_delete_acl_policy_with_metadata", + "post_list_backup_collections_with_metadata", ) as post_with_metadata, mock.patch.object( - transports.CloudRedisClusterRestInterceptor, "pre_delete_acl_policy" + transports.CloudRedisClusterRestInterceptor, "pre_list_backup_collections" ) as pre, ): pre.assert_not_called() post.assert_not_called() post_with_metadata.assert_not_called() - pb_message = cloud_redis_cluster.DeleteAclPolicyRequest.pb( - cloud_redis_cluster.DeleteAclPolicyRequest() + pb_message = cloud_redis_cluster.ListBackupCollectionsRequest.pb( + cloud_redis_cluster.ListBackupCollectionsRequest() ) transcode.return_value = { "method": "post", @@ -16499,19 +22974,24 @@ def test_delete_acl_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 = json_format.MessageToJson(operations_pb2.Operation()) + return_value = cloud_redis_cluster.ListBackupCollectionsResponse.to_json( + cloud_redis_cluster.ListBackupCollectionsResponse() + ) req.return_value.content = return_value - request = cloud_redis_cluster.DeleteAclPolicyRequest() + request = cloud_redis_cluster.ListBackupCollectionsRequest() metadata = [ ("key", "val"), ("cephalopod", "squid"), ] pre.return_value = request, metadata - post.return_value = operations_pb2.Operation() - post_with_metadata.return_value = operations_pb2.Operation(), metadata + post.return_value = cloud_redis_cluster.ListBackupCollectionsResponse() + post_with_metadata.return_value = ( + cloud_redis_cluster.ListBackupCollectionsResponse(), + metadata, + ) - client.delete_acl_policy( + client.list_backup_collections( request, metadata=[ ("key", "val"), @@ -16524,15 +23004,15 @@ def test_delete_acl_policy_rest_interceptors(null_interceptor): post_with_metadata.assert_called_once() -def test_get_acl_policy_revision_rest_bad_request( - request_type=cloud_redis_cluster.GetAclPolicyRevisionRequest, +def test_get_backup_collection_rest_bad_request( + request_type=cloud_redis_cluster.GetBackupCollectionRequest, ): client = CloudRedisClusterClient( credentials=ga_credentials.AnonymousCredentials(), transport="rest" ) # send a request that will satisfy transcoding request_init = { - "name": "projects/sample1/locations/sample2/aclPolicies/sample3/revisions/sample4" + "name": "projects/sample1/locations/sample2/backupCollections/sample3" } request = request_type(**request_init) @@ -16549,34 +23029,36 @@ def test_get_acl_policy_revision_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_acl_policy_revision(request) + client.get_backup_collection(request) @pytest.mark.parametrize( "request_type", [ - cloud_redis_cluster.GetAclPolicyRevisionRequest, + cloud_redis_cluster.GetBackupCollectionRequest, dict, ], ) -def test_get_acl_policy_revision_rest_call_success(request_type): +def test_get_backup_collection_rest_call_success(request_type): client = CloudRedisClusterClient( credentials=ga_credentials.AnonymousCredentials(), transport="rest" ) # send a request that will satisfy transcoding request_init = { - "name": "projects/sample1/locations/sample2/aclPolicies/sample3/revisions/sample4" + "name": "projects/sample1/locations/sample2/backupCollections/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 = cloud_redis_cluster.AclPolicyRevision( + return_value = cloud_redis_cluster.BackupCollection( name="name_value", - revision_number=1623, - attached_clusters=["attached_clusters_value"], + cluster_uid="cluster_uid_value", + cluster="cluster_value", + kms_key="kms_key_value", + uid="uid_value", ) # Wrap the value into a proper Response obj @@ -16584,22 +23066,24 @@ def test_get_acl_policy_revision_rest_call_success(request_type): response_value.status_code = 200 # Convert return value to protobuf type - return_value = cloud_redis_cluster.AclPolicyRevision.pb(return_value) + return_value = cloud_redis_cluster.BackupCollection.pb(return_value) json_return_value = json_format.MessageToJson(return_value) response_value.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_acl_policy_revision(request) + response = client.get_backup_collection(request) # Establish that the response is the type that we expect. - assert isinstance(response, cloud_redis_cluster.AclPolicyRevision) + assert isinstance(response, cloud_redis_cluster.BackupCollection) assert response.name == "name_value" - assert response.revision_number == 1623 - assert response.attached_clusters == ["attached_clusters_value"] + assert response.cluster_uid == "cluster_uid_value" + assert response.cluster == "cluster_value" + assert response.kms_key == "kms_key_value" + assert response.uid == "uid_value" @pytest.mark.parametrize("null_interceptor", [True, False]) -def test_get_acl_policy_revision_rest_interceptors(null_interceptor): +def test_get_backup_collection_rest_interceptors(null_interceptor): transport = transports.CloudRedisClusterRestTransport( credentials=ga_credentials.AnonymousCredentials(), interceptor=None @@ -16612,21 +23096,21 @@ def test_get_acl_policy_revision_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.CloudRedisClusterRestInterceptor, "post_get_acl_policy_revision" + transports.CloudRedisClusterRestInterceptor, "post_get_backup_collection" ) as post, mock.patch.object( transports.CloudRedisClusterRestInterceptor, - "post_get_acl_policy_revision_with_metadata", + "post_get_backup_collection_with_metadata", ) as post_with_metadata, mock.patch.object( - transports.CloudRedisClusterRestInterceptor, "pre_get_acl_policy_revision" + transports.CloudRedisClusterRestInterceptor, "pre_get_backup_collection" ) as pre, ): pre.assert_not_called() post.assert_not_called() post_with_metadata.assert_not_called() - pb_message = cloud_redis_cluster.GetAclPolicyRevisionRequest.pb( - cloud_redis_cluster.GetAclPolicyRevisionRequest() + pb_message = cloud_redis_cluster.GetBackupCollectionRequest.pb( + cloud_redis_cluster.GetBackupCollectionRequest() ) transcode.return_value = { "method": "post", @@ -16638,24 +23122,24 @@ def test_get_acl_policy_revision_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 = cloud_redis_cluster.AclPolicyRevision.to_json( - cloud_redis_cluster.AclPolicyRevision() + return_value = cloud_redis_cluster.BackupCollection.to_json( + cloud_redis_cluster.BackupCollection() ) req.return_value.content = return_value - request = cloud_redis_cluster.GetAclPolicyRevisionRequest() + request = cloud_redis_cluster.GetBackupCollectionRequest() metadata = [ ("key", "val"), ("cephalopod", "squid"), ] pre.return_value = request, metadata - post.return_value = cloud_redis_cluster.AclPolicyRevision() + post.return_value = cloud_redis_cluster.BackupCollection() post_with_metadata.return_value = ( - cloud_redis_cluster.AclPolicyRevision(), + cloud_redis_cluster.BackupCollection(), metadata, ) - client.get_acl_policy_revision( + client.get_backup_collection( request, metadata=[ ("key", "val"), @@ -16668,14 +23152,16 @@ def test_get_acl_policy_revision_rest_interceptors(null_interceptor): post_with_metadata.assert_called_once() -def test_list_acl_policy_revisions_rest_bad_request( - request_type=cloud_redis_cluster.ListAclPolicyRevisionsRequest, +def test_list_backups_rest_bad_request( + request_type=cloud_redis_cluster.ListBackupsRequest, ): client = CloudRedisClusterClient( credentials=ga_credentials.AnonymousCredentials(), transport="rest" ) # send a request that will satisfy transcoding - request_init = {"parent": "projects/sample1/locations/sample2/aclPolicies/sample3"} + request_init = { + "parent": "projects/sample1/locations/sample2/backupCollections/sample3" + } request = request_type(**request_init) # Mock the http request call within the method and fake a BadRequest error. @@ -16691,29 +23177,31 @@ def test_list_acl_policy_revisions_rest_bad_request( response_value.request = mock.Mock() req.return_value = response_value req.return_value.headers = {"header-1": "value-1", "header-2": "value-2"} - client.list_acl_policy_revisions(request) + client.list_backups(request) @pytest.mark.parametrize( "request_type", [ - cloud_redis_cluster.ListAclPolicyRevisionsRequest, + cloud_redis_cluster.ListBackupsRequest, dict, ], ) -def test_list_acl_policy_revisions_rest_call_success(request_type): +def test_list_backups_rest_call_success(request_type): client = CloudRedisClusterClient( credentials=ga_credentials.AnonymousCredentials(), transport="rest" ) # send a request that will satisfy transcoding - request_init = {"parent": "projects/sample1/locations/sample2/aclPolicies/sample3"} + request_init = { + "parent": "projects/sample1/locations/sample2/backupCollections/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 = cloud_redis_cluster.ListAclPolicyRevisionsResponse( + return_value = cloud_redis_cluster.ListBackupsResponse( next_page_token="next_page_token_value", unreachable=["unreachable_value"], ) @@ -16723,23 +23211,21 @@ def test_list_acl_policy_revisions_rest_call_success(request_type): response_value.status_code = 200 # Convert return value to protobuf type - return_value = cloud_redis_cluster.ListAclPolicyRevisionsResponse.pb( - return_value - ) + return_value = cloud_redis_cluster.ListBackupsResponse.pb(return_value) json_return_value = json_format.MessageToJson(return_value) response_value.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_acl_policy_revisions(request) + response = client.list_backups(request) # Establish that the response is the type that we expect. - assert isinstance(response, pagers.ListAclPolicyRevisionsPager) + assert isinstance(response, pagers.ListBackupsPager) assert response.next_page_token == "next_page_token_value" assert response.unreachable == ["unreachable_value"] @pytest.mark.parametrize("null_interceptor", [True, False]) -def test_list_acl_policy_revisions_rest_interceptors(null_interceptor): +def test_list_backups_rest_interceptors(null_interceptor): transport = transports.CloudRedisClusterRestTransport( credentials=ga_credentials.AnonymousCredentials(), interceptor=None @@ -16752,22 +23238,21 @@ def test_list_acl_policy_revisions_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.CloudRedisClusterRestInterceptor, - "post_list_acl_policy_revisions", + transports.CloudRedisClusterRestInterceptor, "post_list_backups" ) as post, mock.patch.object( transports.CloudRedisClusterRestInterceptor, - "post_list_acl_policy_revisions_with_metadata", + "post_list_backups_with_metadata", ) as post_with_metadata, mock.patch.object( - transports.CloudRedisClusterRestInterceptor, "pre_list_acl_policy_revisions" + transports.CloudRedisClusterRestInterceptor, "pre_list_backups" ) as pre, ): pre.assert_not_called() post.assert_not_called() post_with_metadata.assert_not_called() - pb_message = cloud_redis_cluster.ListAclPolicyRevisionsRequest.pb( - cloud_redis_cluster.ListAclPolicyRevisionsRequest() + pb_message = cloud_redis_cluster.ListBackupsRequest.pb( + cloud_redis_cluster.ListBackupsRequest() ) transcode.return_value = { "method": "post", @@ -16779,24 +23264,24 @@ def test_list_acl_policy_revisions_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 = cloud_redis_cluster.ListAclPolicyRevisionsResponse.to_json( - cloud_redis_cluster.ListAclPolicyRevisionsResponse() + return_value = cloud_redis_cluster.ListBackupsResponse.to_json( + cloud_redis_cluster.ListBackupsResponse() ) req.return_value.content = return_value - request = cloud_redis_cluster.ListAclPolicyRevisionsRequest() + request = cloud_redis_cluster.ListBackupsRequest() metadata = [ ("key", "val"), ("cephalopod", "squid"), ] pre.return_value = request, metadata - post.return_value = cloud_redis_cluster.ListAclPolicyRevisionsResponse() + post.return_value = cloud_redis_cluster.ListBackupsResponse() post_with_metadata.return_value = ( - cloud_redis_cluster.ListAclPolicyRevisionsResponse(), + cloud_redis_cluster.ListBackupsResponse(), metadata, ) - client.list_acl_policy_revisions( + client.list_backups( request, metadata=[ ("key", "val"), @@ -16809,14 +23294,14 @@ def test_list_acl_policy_revisions_rest_interceptors(null_interceptor): post_with_metadata.assert_called_once() -def test_create_cluster_rest_bad_request( - request_type=cloud_redis_cluster.CreateClusterRequest, -): +def test_get_backup_rest_bad_request(request_type=cloud_redis_cluster.GetBackupRequest): client = CloudRedisClusterClient( credentials=ga_credentials.AnonymousCredentials(), transport="rest" ) # send a request that will satisfy transcoding - request_init = {"parent": "projects/sample1/locations/sample2"} + request_init = { + "name": "projects/sample1/locations/sample2/backupCollections/sample3/backups/sample4" + } request = request_type(**request_init) # Mock the http request call within the method and fake a BadRequest error. @@ -16832,230 +23317,73 @@ def test_create_cluster_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.create_cluster(request) + client.get_backup(request) @pytest.mark.parametrize( "request_type", [ - cloud_redis_cluster.CreateClusterRequest, + cloud_redis_cluster.GetBackupRequest, dict, ], ) -def test_create_cluster_rest_call_success(request_type): +def test_get_backup_rest_call_success(request_type): client = CloudRedisClusterClient( credentials=ga_credentials.AnonymousCredentials(), transport="rest" ) # send a request that will satisfy transcoding - request_init = {"parent": "projects/sample1/locations/sample2"} - request_init["cluster"] = { - "gcs_source": {"uris": ["uris_value1", "uris_value2"]}, - "managed_backup_source": {"backup": "backup_value"}, - "name": "name_value", - "create_time": {"seconds": 751, "nanos": 543}, - "state": 1, - "uid": "uid_value", - "replica_count": 1384, - "authorization_mode": 1, - "transit_encryption_mode": 1, - "size_gb": 739, - "shard_count": 1178, - "psc_configs": [{"network": "network_value"}], - "discovery_endpoints": [ - {"address": "address_value", "port": 453, "psc_config": {}} - ], - "psc_connections": [ - { - "psc_connection_id": "psc_connection_id_value", - "address": "address_value", - "forwarding_rule": "forwarding_rule_value", - "project_id": "project_id_value", - "network": "network_value", - "service_attachment": "service_attachment_value", - "psc_connection_status": 1, - "connection_type": 1, - } - ], - "state_info": { - "update_info": {"target_shard_count": 1920, "target_replica_count": 2126} - }, - "node_type": 1, - "persistence_config": { - "mode": 1, - "rdb_config": {"rdb_snapshot_period": 1, "rdb_snapshot_start_time": {}}, - "aof_config": {"append_fsync": 1}, - }, - "redis_configs": {}, - "precise_size_gb": 0.15810000000000002, - "zone_distribution_config": {"mode": 1, "zone": "zone_value"}, - "cross_cluster_replication_config": { - "cluster_role": 1, - "primary_cluster": {"cluster": "cluster_value", "uid": "uid_value"}, - "secondary_clusters": {}, - "update_time": {}, - "membership": {"primary_cluster": {}, "secondary_clusters": {}}, - }, - "deletion_protection_enabled": True, - "maintenance_policy": { - "create_time": {}, - "update_time": {}, - "weekly_maintenance_window": [ - { - "day": 1, - "start_time": { - "hours": 561, - "minutes": 773, - "seconds": 751, - "nanos": 543, - }, - } - ], - }, - "maintenance_schedule": {"start_time": {}, "end_time": {}}, - "psc_service_attachments": [ - {"service_attachment": "service_attachment_value", "connection_type": 1} - ], - "cluster_endpoints": [ - { - "connections": [ - { - "psc_auto_connection": { - "psc_connection_id": "psc_connection_id_value", - "address": "address_value", - "forwarding_rule": "forwarding_rule_value", - "project_id": "project_id_value", - "network": "network_value", - "service_attachment": "service_attachment_value", - "psc_connection_status": 1, - "connection_type": 1, - }, - "psc_connection": {}, - } - ] - } - ], - "backup_collection": "backup_collection_value", - "kms_key": "kms_key_value", - "automated_backup_config": { - "fixed_frequency_schedule": {"start_time": {}}, - "automated_backup_mode": 1, - "retention": {"seconds": 751, "nanos": 543}, - }, - "encryption_info": { - "encryption_type": 1, - "kms_key_versions": ["kms_key_versions_value1", "kms_key_versions_value2"], - "kms_key_primary_state": 1, - "last_update_time": {}, - }, - "async_cluster_endpoints_deletion_enabled": True, - "server_ca_mode": 1, - "server_ca_pool": "server_ca_pool_value", - "rotate_server_certificate": True, - "acl_policy": "acl_policy_value", - "acl_policy_info": { - "applied_acl_policy": "applied_acl_policy_value", - "applied_acl_policy_revision": "applied_acl_policy_revision_value", - "applied_acl_policy_revision_number": 3603, - "acl_policy_revision_statuses": [ - { - "acl_policy_revision": "acl_policy_revision_value", - "acl_policy_revision_number": 2773, - "state": 1, - "error_message": "error_message_value", - } - ], - }, + request_init = { + "name": "projects/sample1/locations/sample2/backupCollections/sample3/backups/sample4" } - # 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 = cloud_redis_cluster.CreateClusterRequest.meta.fields["cluster"] - - 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["cluster"].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["cluster"][field])): - del request_init["cluster"][field][i][subfield] - else: - del request_init["cluster"][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 = operations_pb2.Operation(name="operations/spam") + return_value = cloud_redis_cluster.Backup( + name="name_value", + cluster="cluster_value", + cluster_uid="cluster_uid_value", + total_size_bytes=1732, + engine_version="engine_version_value", + node_type=cloud_redis_cluster.NodeType.REDIS_SHARED_CORE_NANO, + replica_count=1384, + shard_count=1178, + backup_type=cloud_redis_cluster.Backup.BackupType.ON_DEMAND, + state=cloud_redis_cluster.Backup.State.CREATING, + uid="uid_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 = cloud_redis_cluster.Backup.pb(return_value) json_return_value = json_format.MessageToJson(return_value) response_value.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_cluster(request) + response = client.get_backup(request) # Establish that the response is the type that we expect. - json_return_value = json_format.MessageToJson(return_value) + assert isinstance(response, cloud_redis_cluster.Backup) + assert response.name == "name_value" + assert response.cluster == "cluster_value" + assert response.cluster_uid == "cluster_uid_value" + assert response.total_size_bytes == 1732 + assert response.engine_version == "engine_version_value" + assert response.node_type == cloud_redis_cluster.NodeType.REDIS_SHARED_CORE_NANO + assert response.replica_count == 1384 + assert response.shard_count == 1178 + assert response.backup_type == cloud_redis_cluster.Backup.BackupType.ON_DEMAND + assert response.state == cloud_redis_cluster.Backup.State.CREATING + assert response.uid == "uid_value" @pytest.mark.parametrize("null_interceptor", [True, False]) -def test_create_cluster_rest_interceptors(null_interceptor): +def test_get_backup_rest_interceptors(null_interceptor): transport = transports.CloudRedisClusterRestTransport( credentials=ga_credentials.AnonymousCredentials(), interceptor=None @@ -17067,23 +23395,21 @@ def test_create_cluster_rest_interceptors(null_interceptor): with ( mock.patch.object(type(client.transport._session), "request") as req, mock.patch.object(path_template, "transcode") as transcode, - mock.patch.object(operation.Operation, "_set_result_from_operation"), mock.patch.object( - transports.CloudRedisClusterRestInterceptor, "post_create_cluster" + transports.CloudRedisClusterRestInterceptor, "post_get_backup" ) as post, mock.patch.object( - transports.CloudRedisClusterRestInterceptor, - "post_create_cluster_with_metadata", + transports.CloudRedisClusterRestInterceptor, "post_get_backup_with_metadata" ) as post_with_metadata, mock.patch.object( - transports.CloudRedisClusterRestInterceptor, "pre_create_cluster" + transports.CloudRedisClusterRestInterceptor, "pre_get_backup" ) as pre, ): pre.assert_not_called() post.assert_not_called() post_with_metadata.assert_not_called() - pb_message = cloud_redis_cluster.CreateClusterRequest.pb( - cloud_redis_cluster.CreateClusterRequest() + pb_message = cloud_redis_cluster.GetBackupRequest.pb( + cloud_redis_cluster.GetBackupRequest() ) transcode.return_value = { "method": "post", @@ -17095,19 +23421,19 @@ def test_create_cluster_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 = json_format.MessageToJson(operations_pb2.Operation()) + return_value = cloud_redis_cluster.Backup.to_json(cloud_redis_cluster.Backup()) req.return_value.content = return_value - request = cloud_redis_cluster.CreateClusterRequest() + request = cloud_redis_cluster.GetBackupRequest() metadata = [ ("key", "val"), ("cephalopod", "squid"), ] pre.return_value = request, metadata - post.return_value = operations_pb2.Operation() - post_with_metadata.return_value = operations_pb2.Operation(), metadata + post.return_value = cloud_redis_cluster.Backup() + post_with_metadata.return_value = cloud_redis_cluster.Backup(), metadata - client.create_cluster( + client.get_backup( request, metadata=[ ("key", "val"), @@ -17120,14 +23446,16 @@ def test_create_cluster_rest_interceptors(null_interceptor): post_with_metadata.assert_called_once() -def test_create_acl_policy_rest_bad_request( - request_type=cloud_redis_cluster.CreateAclPolicyRequest, +def test_delete_backup_rest_bad_request( + request_type=cloud_redis_cluster.DeleteBackupRequest, ): client = CloudRedisClusterClient( credentials=ga_credentials.AnonymousCredentials(), transport="rest" ) # send a request that will satisfy transcoding - request_init = {"parent": "projects/sample1/locations/sample2"} + request_init = { + "name": "projects/sample1/locations/sample2/backupCollections/sample3/backups/sample4" + } request = request_type(**request_init) # Mock the http request call within the method and fake a BadRequest error. @@ -17143,143 +23471,47 @@ def test_create_acl_policy_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.create_acl_policy(request) + client.delete_backup(request) @pytest.mark.parametrize( "request_type", [ - cloud_redis_cluster.CreateAclPolicyRequest, + cloud_redis_cluster.DeleteBackupRequest, dict, ], ) -def test_create_acl_policy_rest_call_success(request_type): +def test_delete_backup_rest_call_success(request_type): client = CloudRedisClusterClient( credentials=ga_credentials.AnonymousCredentials(), transport="rest" ) # send a request that will satisfy transcoding - request_init = {"parent": "projects/sample1/locations/sample2"} - request_init["acl_policy"] = { - "name": "name_value", - "rules": [{"username": "username_value", "rule": "rule_value"}], - "state": 1, - "etag": "etag_value", - "cluster_acl_policy_attachments": [ - { - "cluster": "cluster_value", - "acl_policy_revision_statuses": [ - { - "acl_policy_revision": "acl_policy_revision_value", - "acl_policy_revision_number": 2773, - "state": 1, - "error_message": "error_message_value", - } - ], - } - ], - "create_time": {"seconds": 751, "nanos": 543}, - "update_time": {}, + request_init = { + "name": "projects/sample1/locations/sample2/backupCollections/sample3/backups/sample4" } - # 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 = cloud_redis_cluster.CreateAclPolicyRequest.meta.fields["acl_policy"] - - 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["acl_policy"].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["acl_policy"][field])): - del request_init["acl_policy"][field][i][subfield] - else: - del request_init["acl_policy"][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 = cloud_redis_cluster.AclPolicy( - name="name_value", - state=cloud_redis_cluster.AclPolicy.State.ACTIVE, - etag="etag_value", - ) + return_value = operations_pb2.Operation(name="operations/spam") # 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 = cloud_redis_cluster.AclPolicy.pb(return_value) json_return_value = json_format.MessageToJson(return_value) response_value.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_acl_policy(request) + response = client.delete_backup(request) # Establish that the response is the type that we expect. - assert isinstance(response, cloud_redis_cluster.AclPolicy) - assert response.name == "name_value" - assert response.state == cloud_redis_cluster.AclPolicy.State.ACTIVE - assert response.etag == "etag_value" + json_return_value = json_format.MessageToJson(return_value) @pytest.mark.parametrize("null_interceptor", [True, False]) -def test_create_acl_policy_rest_interceptors(null_interceptor): +def test_delete_backup_rest_interceptors(null_interceptor): transport = transports.CloudRedisClusterRestTransport( credentials=ga_credentials.AnonymousCredentials(), interceptor=None @@ -17291,22 +23523,23 @@ def test_create_acl_policy_rest_interceptors(null_interceptor): with ( mock.patch.object(type(client.transport._session), "request") as req, mock.patch.object(path_template, "transcode") as transcode, + mock.patch.object(operation.Operation, "_set_result_from_operation"), mock.patch.object( - transports.CloudRedisClusterRestInterceptor, "post_create_acl_policy" + transports.CloudRedisClusterRestInterceptor, "post_delete_backup" ) as post, mock.patch.object( transports.CloudRedisClusterRestInterceptor, - "post_create_acl_policy_with_metadata", + "post_delete_backup_with_metadata", ) as post_with_metadata, mock.patch.object( - transports.CloudRedisClusterRestInterceptor, "pre_create_acl_policy" + transports.CloudRedisClusterRestInterceptor, "pre_delete_backup" ) as pre, ): pre.assert_not_called() post.assert_not_called() post_with_metadata.assert_not_called() - pb_message = cloud_redis_cluster.CreateAclPolicyRequest.pb( - cloud_redis_cluster.CreateAclPolicyRequest() + pb_message = cloud_redis_cluster.DeleteBackupRequest.pb( + cloud_redis_cluster.DeleteBackupRequest() ) transcode.return_value = { "method": "post", @@ -17318,21 +23551,19 @@ def test_create_acl_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 = cloud_redis_cluster.AclPolicy.to_json( - cloud_redis_cluster.AclPolicy() - ) + return_value = json_format.MessageToJson(operations_pb2.Operation()) req.return_value.content = return_value - request = cloud_redis_cluster.CreateAclPolicyRequest() + request = cloud_redis_cluster.DeleteBackupRequest() metadata = [ ("key", "val"), ("cephalopod", "squid"), ] pre.return_value = request, metadata - post.return_value = cloud_redis_cluster.AclPolicy() - post_with_metadata.return_value = cloud_redis_cluster.AclPolicy(), metadata + post.return_value = operations_pb2.Operation() + post_with_metadata.return_value = operations_pb2.Operation(), metadata - client.create_acl_policy( + client.delete_backup( request, metadata=[ ("key", "val"), @@ -17345,15 +23576,15 @@ def test_create_acl_policy_rest_interceptors(null_interceptor): post_with_metadata.assert_called_once() -def test_get_cluster_certificate_authority_rest_bad_request( - request_type=cloud_redis_cluster.GetClusterCertificateAuthorityRequest, +def test_export_backup_rest_bad_request( + request_type=cloud_redis_cluster.ExportBackupRequest, ): client = CloudRedisClusterClient( credentials=ga_credentials.AnonymousCredentials(), transport="rest" ) # send a request that will satisfy transcoding request_init = { - "name": "projects/sample1/locations/sample2/clusters/sample3/certificateAuthority" + "name": "projects/sample1/locations/sample2/backupCollections/sample3/backups/sample4" } request = request_type(**request_init) @@ -17370,53 +23601,47 @@ def test_get_cluster_certificate_authority_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_cluster_certificate_authority(request) + client.export_backup(request) @pytest.mark.parametrize( "request_type", [ - cloud_redis_cluster.GetClusterCertificateAuthorityRequest, + cloud_redis_cluster.ExportBackupRequest, dict, ], ) -def test_get_cluster_certificate_authority_rest_call_success(request_type): +def test_export_backup_rest_call_success(request_type): client = CloudRedisClusterClient( credentials=ga_credentials.AnonymousCredentials(), transport="rest" ) # send a request that will satisfy transcoding request_init = { - "name": "projects/sample1/locations/sample2/clusters/sample3/certificateAuthority" + "name": "projects/sample1/locations/sample2/backupCollections/sample3/backups/sample4" } 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 = cloud_redis_cluster.CertificateAuthority( - name="name_value", - ) + return_value = operations_pb2.Operation(name="operations/spam") # 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 = cloud_redis_cluster.CertificateAuthority.pb(return_value) json_return_value = json_format.MessageToJson(return_value) response_value.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_cluster_certificate_authority(request) + response = client.export_backup(request) # Establish that the response is the type that we expect. - assert isinstance(response, cloud_redis_cluster.CertificateAuthority) - assert response.name == "name_value" + json_return_value = json_format.MessageToJson(return_value) @pytest.mark.parametrize("null_interceptor", [True, False]) -def test_get_cluster_certificate_authority_rest_interceptors(null_interceptor): +def test_export_backup_rest_interceptors(null_interceptor): transport = transports.CloudRedisClusterRestTransport( credentials=ga_credentials.AnonymousCredentials(), interceptor=None @@ -17428,24 +23653,23 @@ def test_get_cluster_certificate_authority_rest_interceptors(null_interceptor): with ( mock.patch.object(type(client.transport._session), "request") as req, mock.patch.object(path_template, "transcode") as transcode, + mock.patch.object(operation.Operation, "_set_result_from_operation"), mock.patch.object( - transports.CloudRedisClusterRestInterceptor, - "post_get_cluster_certificate_authority", + transports.CloudRedisClusterRestInterceptor, "post_export_backup" ) as post, mock.patch.object( transports.CloudRedisClusterRestInterceptor, - "post_get_cluster_certificate_authority_with_metadata", + "post_export_backup_with_metadata", ) as post_with_metadata, mock.patch.object( - transports.CloudRedisClusterRestInterceptor, - "pre_get_cluster_certificate_authority", + transports.CloudRedisClusterRestInterceptor, "pre_export_backup" ) as pre, ): pre.assert_not_called() post.assert_not_called() post_with_metadata.assert_not_called() - pb_message = cloud_redis_cluster.GetClusterCertificateAuthorityRequest.pb( - cloud_redis_cluster.GetClusterCertificateAuthorityRequest() + pb_message = cloud_redis_cluster.ExportBackupRequest.pb( + cloud_redis_cluster.ExportBackupRequest() ) transcode.return_value = { "method": "post", @@ -17457,24 +23681,19 @@ def test_get_cluster_certificate_authority_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 = cloud_redis_cluster.CertificateAuthority.to_json( - cloud_redis_cluster.CertificateAuthority() - ) + return_value = json_format.MessageToJson(operations_pb2.Operation()) req.return_value.content = return_value - request = cloud_redis_cluster.GetClusterCertificateAuthorityRequest() + request = cloud_redis_cluster.ExportBackupRequest() metadata = [ ("key", "val"), ("cephalopod", "squid"), ] pre.return_value = request, metadata - post.return_value = cloud_redis_cluster.CertificateAuthority() - post_with_metadata.return_value = ( - cloud_redis_cluster.CertificateAuthority(), - metadata, - ) + post.return_value = operations_pb2.Operation() + post_with_metadata.return_value = operations_pb2.Operation(), metadata - client.get_cluster_certificate_authority( + client.export_backup( request, metadata=[ ("key", "val"), @@ -17487,16 +23706,14 @@ def test_get_cluster_certificate_authority_rest_interceptors(null_interceptor): post_with_metadata.assert_called_once() -def test_get_shared_regional_certificate_authority_rest_bad_request( - request_type=cloud_redis_cluster.GetSharedRegionalCertificateAuthorityRequest, +def test_backup_cluster_rest_bad_request( + request_type=cloud_redis_cluster.BackupClusterRequest, ): client = CloudRedisClusterClient( credentials=ga_credentials.AnonymousCredentials(), transport="rest" ) # send a request that will satisfy transcoding - request_init = { - "name": "projects/sample1/locations/sample2/sharedRegionalCertificateAuthority" - } + request_init = {"name": "projects/sample1/locations/sample2/clusters/sample3"} request = request_type(**request_init) # Mock the http request call within the method and fake a BadRequest error. @@ -17512,55 +23729,45 @@ def test_get_shared_regional_certificate_authority_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_shared_regional_certificate_authority(request) + client.backup_cluster(request) @pytest.mark.parametrize( "request_type", [ - cloud_redis_cluster.GetSharedRegionalCertificateAuthorityRequest, + cloud_redis_cluster.BackupClusterRequest, dict, ], ) -def test_get_shared_regional_certificate_authority_rest_call_success(request_type): +def test_backup_cluster_rest_call_success(request_type): client = CloudRedisClusterClient( credentials=ga_credentials.AnonymousCredentials(), transport="rest" ) # send a request that will satisfy transcoding - request_init = { - "name": "projects/sample1/locations/sample2/sharedRegionalCertificateAuthority" - } + request_init = {"name": "projects/sample1/locations/sample2/clusters/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 = cloud_redis_cluster.SharedRegionalCertificateAuthority( - name="name_value", - ) + return_value = operations_pb2.Operation(name="operations/spam") # 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 = cloud_redis_cluster.SharedRegionalCertificateAuthority.pb( - return_value - ) json_return_value = json_format.MessageToJson(return_value) response_value.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_shared_regional_certificate_authority(request) + response = client.backup_cluster(request) # Establish that the response is the type that we expect. - assert isinstance(response, cloud_redis_cluster.SharedRegionalCertificateAuthority) - assert response.name == "name_value" + json_return_value = json_format.MessageToJson(return_value) @pytest.mark.parametrize("null_interceptor", [True, False]) -def test_get_shared_regional_certificate_authority_rest_interceptors(null_interceptor): +def test_backup_cluster_rest_interceptors(null_interceptor): transport = transports.CloudRedisClusterRestTransport( credentials=ga_credentials.AnonymousCredentials(), interceptor=None @@ -17572,26 +23779,23 @@ def test_get_shared_regional_certificate_authority_rest_interceptors(null_interc with ( mock.patch.object(type(client.transport._session), "request") as req, mock.patch.object(path_template, "transcode") as transcode, + mock.patch.object(operation.Operation, "_set_result_from_operation"), mock.patch.object( - transports.CloudRedisClusterRestInterceptor, - "post_get_shared_regional_certificate_authority", + transports.CloudRedisClusterRestInterceptor, "post_backup_cluster" ) as post, mock.patch.object( transports.CloudRedisClusterRestInterceptor, - "post_get_shared_regional_certificate_authority_with_metadata", + "post_backup_cluster_with_metadata", ) as post_with_metadata, mock.patch.object( - transports.CloudRedisClusterRestInterceptor, - "pre_get_shared_regional_certificate_authority", + transports.CloudRedisClusterRestInterceptor, "pre_backup_cluster" ) as pre, ): pre.assert_not_called() post.assert_not_called() post_with_metadata.assert_not_called() - pb_message = ( - cloud_redis_cluster.GetSharedRegionalCertificateAuthorityRequest.pb( - cloud_redis_cluster.GetSharedRegionalCertificateAuthorityRequest() - ) + pb_message = cloud_redis_cluster.BackupClusterRequest.pb( + cloud_redis_cluster.BackupClusterRequest() ) transcode.return_value = { "method": "post", @@ -17603,24 +23807,19 @@ def test_get_shared_regional_certificate_authority_rest_interceptors(null_interc 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 = cloud_redis_cluster.SharedRegionalCertificateAuthority.to_json( - cloud_redis_cluster.SharedRegionalCertificateAuthority() - ) + return_value = json_format.MessageToJson(operations_pb2.Operation()) req.return_value.content = return_value - request = cloud_redis_cluster.GetSharedRegionalCertificateAuthorityRequest() + request = cloud_redis_cluster.BackupClusterRequest() metadata = [ ("key", "val"), ("cephalopod", "squid"), ] - pre.return_value = request, metadata - post.return_value = cloud_redis_cluster.SharedRegionalCertificateAuthority() - post_with_metadata.return_value = ( - cloud_redis_cluster.SharedRegionalCertificateAuthority(), - metadata, - ) + pre.return_value = request, metadata + post.return_value = operations_pb2.Operation() + post_with_metadata.return_value = operations_pb2.Operation(), metadata - client.get_shared_regional_certificate_authority( + client.backup_cluster( request, metadata=[ ("key", "val"), @@ -17633,14 +23832,14 @@ def test_get_shared_regional_certificate_authority_rest_interceptors(null_interc post_with_metadata.assert_called_once() -def test_reschedule_cluster_maintenance_rest_bad_request( - request_type=cloud_redis_cluster.RescheduleClusterMaintenanceRequest, +def test_list_token_auth_users_rest_bad_request( + request_type=cloud_redis_cluster.ListTokenAuthUsersRequest, ): client = CloudRedisClusterClient( credentials=ga_credentials.AnonymousCredentials(), transport="rest" ) # send a request that will satisfy transcoding - request_init = {"name": "projects/sample1/locations/sample2/clusters/sample3"} + request_init = {"parent": "projects/sample1/locations/sample2/clusters/sample3"} request = request_type(**request_init) # Mock the http request call within the method and fake a BadRequest error. @@ -17656,45 +23855,53 @@ def test_reschedule_cluster_maintenance_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.reschedule_cluster_maintenance(request) + client.list_token_auth_users(request) @pytest.mark.parametrize( "request_type", [ - cloud_redis_cluster.RescheduleClusterMaintenanceRequest, + cloud_redis_cluster.ListTokenAuthUsersRequest, dict, ], ) -def test_reschedule_cluster_maintenance_rest_call_success(request_type): +def test_list_token_auth_users_rest_call_success(request_type): client = CloudRedisClusterClient( credentials=ga_credentials.AnonymousCredentials(), transport="rest" ) # send a request that will satisfy transcoding - request_init = {"name": "projects/sample1/locations/sample2/clusters/sample3"} + request_init = {"parent": "projects/sample1/locations/sample2/clusters/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 = operations_pb2.Operation(name="operations/spam") + return_value = cloud_redis_cluster.ListTokenAuthUsersResponse( + next_page_token="next_page_token_value", + unreachable=["unreachable_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 = cloud_redis_cluster.ListTokenAuthUsersResponse.pb(return_value) json_return_value = json_format.MessageToJson(return_value) response_value.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.reschedule_cluster_maintenance(request) + response = client.list_token_auth_users(request) # Establish that the response is the type that we expect. - json_return_value = json_format.MessageToJson(return_value) + assert isinstance(response, pagers.ListTokenAuthUsersPager) + assert response.next_page_token == "next_page_token_value" + assert response.unreachable == ["unreachable_value"] @pytest.mark.parametrize("null_interceptor", [True, False]) -def test_reschedule_cluster_maintenance_rest_interceptors(null_interceptor): +def test_list_token_auth_users_rest_interceptors(null_interceptor): transport = transports.CloudRedisClusterRestTransport( credentials=ga_credentials.AnonymousCredentials(), interceptor=None @@ -17706,25 +23913,22 @@ def test_reschedule_cluster_maintenance_rest_interceptors(null_interceptor): with ( mock.patch.object(type(client.transport._session), "request") as req, mock.patch.object(path_template, "transcode") as transcode, - mock.patch.object(operation.Operation, "_set_result_from_operation"), mock.patch.object( - transports.CloudRedisClusterRestInterceptor, - "post_reschedule_cluster_maintenance", + transports.CloudRedisClusterRestInterceptor, "post_list_token_auth_users" ) as post, mock.patch.object( transports.CloudRedisClusterRestInterceptor, - "post_reschedule_cluster_maintenance_with_metadata", + "post_list_token_auth_users_with_metadata", ) as post_with_metadata, mock.patch.object( - transports.CloudRedisClusterRestInterceptor, - "pre_reschedule_cluster_maintenance", + transports.CloudRedisClusterRestInterceptor, "pre_list_token_auth_users" ) as pre, ): pre.assert_not_called() post.assert_not_called() post_with_metadata.assert_not_called() - pb_message = cloud_redis_cluster.RescheduleClusterMaintenanceRequest.pb( - cloud_redis_cluster.RescheduleClusterMaintenanceRequest() + pb_message = cloud_redis_cluster.ListTokenAuthUsersRequest.pb( + cloud_redis_cluster.ListTokenAuthUsersRequest() ) transcode.return_value = { "method": "post", @@ -17736,19 +23940,24 @@ def test_reschedule_cluster_maintenance_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 = json_format.MessageToJson(operations_pb2.Operation()) + return_value = cloud_redis_cluster.ListTokenAuthUsersResponse.to_json( + cloud_redis_cluster.ListTokenAuthUsersResponse() + ) req.return_value.content = return_value - request = cloud_redis_cluster.RescheduleClusterMaintenanceRequest() + request = cloud_redis_cluster.ListTokenAuthUsersRequest() metadata = [ ("key", "val"), ("cephalopod", "squid"), ] pre.return_value = request, metadata - post.return_value = operations_pb2.Operation() - post_with_metadata.return_value = operations_pb2.Operation(), metadata + post.return_value = cloud_redis_cluster.ListTokenAuthUsersResponse() + post_with_metadata.return_value = ( + cloud_redis_cluster.ListTokenAuthUsersResponse(), + metadata, + ) - client.reschedule_cluster_maintenance( + client.list_token_auth_users( request, metadata=[ ("key", "val"), @@ -17761,14 +23970,16 @@ def test_reschedule_cluster_maintenance_rest_interceptors(null_interceptor): post_with_metadata.assert_called_once() -def test_list_backup_collections_rest_bad_request( - request_type=cloud_redis_cluster.ListBackupCollectionsRequest, +def test_get_token_auth_user_rest_bad_request( + request_type=cloud_redis_cluster.GetTokenAuthUserRequest, ): client = CloudRedisClusterClient( credentials=ga_credentials.AnonymousCredentials(), transport="rest" ) # send a request that will satisfy transcoding - request_init = {"parent": "projects/sample1/locations/sample2"} + request_init = { + "name": "projects/sample1/locations/sample2/clusters/sample3/tokenAuthUsers/sample4" + } request = request_type(**request_init) # Mock the http request call within the method and fake a BadRequest error. @@ -17784,31 +23995,33 @@ def test_list_backup_collections_rest_bad_request( response_value.request = mock.Mock() req.return_value = response_value req.return_value.headers = {"header-1": "value-1", "header-2": "value-2"} - client.list_backup_collections(request) + client.get_token_auth_user(request) @pytest.mark.parametrize( "request_type", [ - cloud_redis_cluster.ListBackupCollectionsRequest, + cloud_redis_cluster.GetTokenAuthUserRequest, dict, ], ) -def test_list_backup_collections_rest_call_success(request_type): +def test_get_token_auth_user_rest_call_success(request_type): client = CloudRedisClusterClient( credentials=ga_credentials.AnonymousCredentials(), transport="rest" ) # send a request that will satisfy transcoding - request_init = {"parent": "projects/sample1/locations/sample2"} + request_init = { + "name": "projects/sample1/locations/sample2/clusters/sample3/tokenAuthUsers/sample4" + } 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 = cloud_redis_cluster.ListBackupCollectionsResponse( - next_page_token="next_page_token_value", - unreachable=["unreachable_value"], + return_value = cloud_redis_cluster.TokenAuthUser( + name="name_value", + state=cloud_redis_cluster.TokenAuthUser.State.ACTIVE, ) # Wrap the value into a proper Response obj @@ -17816,23 +24029,21 @@ def test_list_backup_collections_rest_call_success(request_type): response_value.status_code = 200 # Convert return value to protobuf type - return_value = cloud_redis_cluster.ListBackupCollectionsResponse.pb( - return_value - ) + return_value = cloud_redis_cluster.TokenAuthUser.pb(return_value) json_return_value = json_format.MessageToJson(return_value) response_value.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_backup_collections(request) + response = client.get_token_auth_user(request) # Establish that the response is the type that we expect. - assert isinstance(response, pagers.ListBackupCollectionsPager) - assert response.next_page_token == "next_page_token_value" - assert response.unreachable == ["unreachable_value"] + assert isinstance(response, cloud_redis_cluster.TokenAuthUser) + assert response.name == "name_value" + assert response.state == cloud_redis_cluster.TokenAuthUser.State.ACTIVE @pytest.mark.parametrize("null_interceptor", [True, False]) -def test_list_backup_collections_rest_interceptors(null_interceptor): +def test_get_token_auth_user_rest_interceptors(null_interceptor): transport = transports.CloudRedisClusterRestTransport( credentials=ga_credentials.AnonymousCredentials(), interceptor=None @@ -17845,21 +24056,21 @@ def test_list_backup_collections_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.CloudRedisClusterRestInterceptor, "post_list_backup_collections" + transports.CloudRedisClusterRestInterceptor, "post_get_token_auth_user" ) as post, mock.patch.object( transports.CloudRedisClusterRestInterceptor, - "post_list_backup_collections_with_metadata", + "post_get_token_auth_user_with_metadata", ) as post_with_metadata, mock.patch.object( - transports.CloudRedisClusterRestInterceptor, "pre_list_backup_collections" + transports.CloudRedisClusterRestInterceptor, "pre_get_token_auth_user" ) as pre, ): pre.assert_not_called() post.assert_not_called() post_with_metadata.assert_not_called() - pb_message = cloud_redis_cluster.ListBackupCollectionsRequest.pb( - cloud_redis_cluster.ListBackupCollectionsRequest() + pb_message = cloud_redis_cluster.GetTokenAuthUserRequest.pb( + cloud_redis_cluster.GetTokenAuthUserRequest() ) transcode.return_value = { "method": "post", @@ -17871,24 +24082,21 @@ def test_list_backup_collections_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 = cloud_redis_cluster.ListBackupCollectionsResponse.to_json( - cloud_redis_cluster.ListBackupCollectionsResponse() + return_value = cloud_redis_cluster.TokenAuthUser.to_json( + cloud_redis_cluster.TokenAuthUser() ) req.return_value.content = return_value - request = cloud_redis_cluster.ListBackupCollectionsRequest() + request = cloud_redis_cluster.GetTokenAuthUserRequest() metadata = [ ("key", "val"), ("cephalopod", "squid"), ] pre.return_value = request, metadata - post.return_value = cloud_redis_cluster.ListBackupCollectionsResponse() - post_with_metadata.return_value = ( - cloud_redis_cluster.ListBackupCollectionsResponse(), - metadata, - ) + post.return_value = cloud_redis_cluster.TokenAuthUser() + post_with_metadata.return_value = cloud_redis_cluster.TokenAuthUser(), metadata - client.list_backup_collections( + client.get_token_auth_user( request, metadata=[ ("key", "val"), @@ -17901,15 +24109,15 @@ def test_list_backup_collections_rest_interceptors(null_interceptor): post_with_metadata.assert_called_once() -def test_get_backup_collection_rest_bad_request( - request_type=cloud_redis_cluster.GetBackupCollectionRequest, +def test_list_auth_tokens_rest_bad_request( + request_type=cloud_redis_cluster.ListAuthTokensRequest, ): client = CloudRedisClusterClient( credentials=ga_credentials.AnonymousCredentials(), transport="rest" ) # send a request that will satisfy transcoding request_init = { - "name": "projects/sample1/locations/sample2/backupCollections/sample3" + "parent": "projects/sample1/locations/sample2/clusters/sample3/tokenAuthUsers/sample4" } request = request_type(**request_init) @@ -17926,36 +24134,33 @@ def test_get_backup_collection_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_backup_collection(request) + client.list_auth_tokens(request) @pytest.mark.parametrize( "request_type", [ - cloud_redis_cluster.GetBackupCollectionRequest, + cloud_redis_cluster.ListAuthTokensRequest, dict, ], ) -def test_get_backup_collection_rest_call_success(request_type): +def test_list_auth_tokens_rest_call_success(request_type): client = CloudRedisClusterClient( credentials=ga_credentials.AnonymousCredentials(), transport="rest" ) # send a request that will satisfy transcoding request_init = { - "name": "projects/sample1/locations/sample2/backupCollections/sample3" + "parent": "projects/sample1/locations/sample2/clusters/sample3/tokenAuthUsers/sample4" } 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 = cloud_redis_cluster.BackupCollection( - name="name_value", - cluster_uid="cluster_uid_value", - cluster="cluster_value", - kms_key="kms_key_value", - uid="uid_value", + return_value = cloud_redis_cluster.ListAuthTokensResponse( + next_page_token="next_page_token_value", + unreachable=["unreachable_value"], ) # Wrap the value into a proper Response obj @@ -17963,24 +24168,21 @@ def test_get_backup_collection_rest_call_success(request_type): response_value.status_code = 200 # Convert return value to protobuf type - return_value = cloud_redis_cluster.BackupCollection.pb(return_value) + return_value = cloud_redis_cluster.ListAuthTokensResponse.pb(return_value) json_return_value = json_format.MessageToJson(return_value) response_value.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_backup_collection(request) + response = client.list_auth_tokens(request) # Establish that the response is the type that we expect. - assert isinstance(response, cloud_redis_cluster.BackupCollection) - assert response.name == "name_value" - assert response.cluster_uid == "cluster_uid_value" - assert response.cluster == "cluster_value" - assert response.kms_key == "kms_key_value" - assert response.uid == "uid_value" + assert isinstance(response, pagers.ListAuthTokensPager) + assert response.next_page_token == "next_page_token_value" + assert response.unreachable == ["unreachable_value"] @pytest.mark.parametrize("null_interceptor", [True, False]) -def test_get_backup_collection_rest_interceptors(null_interceptor): +def test_list_auth_tokens_rest_interceptors(null_interceptor): transport = transports.CloudRedisClusterRestTransport( credentials=ga_credentials.AnonymousCredentials(), interceptor=None @@ -17993,21 +24195,21 @@ def test_get_backup_collection_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.CloudRedisClusterRestInterceptor, "post_get_backup_collection" + transports.CloudRedisClusterRestInterceptor, "post_list_auth_tokens" ) as post, mock.patch.object( transports.CloudRedisClusterRestInterceptor, - "post_get_backup_collection_with_metadata", + "post_list_auth_tokens_with_metadata", ) as post_with_metadata, mock.patch.object( - transports.CloudRedisClusterRestInterceptor, "pre_get_backup_collection" + transports.CloudRedisClusterRestInterceptor, "pre_list_auth_tokens" ) as pre, ): pre.assert_not_called() post.assert_not_called() post_with_metadata.assert_not_called() - pb_message = cloud_redis_cluster.GetBackupCollectionRequest.pb( - cloud_redis_cluster.GetBackupCollectionRequest() + pb_message = cloud_redis_cluster.ListAuthTokensRequest.pb( + cloud_redis_cluster.ListAuthTokensRequest() ) transcode.return_value = { "method": "post", @@ -18019,24 +24221,24 @@ def test_get_backup_collection_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 = cloud_redis_cluster.BackupCollection.to_json( - cloud_redis_cluster.BackupCollection() + return_value = cloud_redis_cluster.ListAuthTokensResponse.to_json( + cloud_redis_cluster.ListAuthTokensResponse() ) req.return_value.content = return_value - request = cloud_redis_cluster.GetBackupCollectionRequest() + request = cloud_redis_cluster.ListAuthTokensRequest() metadata = [ ("key", "val"), ("cephalopod", "squid"), ] pre.return_value = request, metadata - post.return_value = cloud_redis_cluster.BackupCollection() + post.return_value = cloud_redis_cluster.ListAuthTokensResponse() post_with_metadata.return_value = ( - cloud_redis_cluster.BackupCollection(), + cloud_redis_cluster.ListAuthTokensResponse(), metadata, ) - client.get_backup_collection( + client.list_auth_tokens( request, metadata=[ ("key", "val"), @@ -18049,15 +24251,15 @@ def test_get_backup_collection_rest_interceptors(null_interceptor): post_with_metadata.assert_called_once() -def test_list_backups_rest_bad_request( - request_type=cloud_redis_cluster.ListBackupsRequest, +def test_get_auth_token_rest_bad_request( + request_type=cloud_redis_cluster.GetAuthTokenRequest, ): client = CloudRedisClusterClient( credentials=ga_credentials.AnonymousCredentials(), transport="rest" ) # send a request that will satisfy transcoding request_init = { - "parent": "projects/sample1/locations/sample2/backupCollections/sample3" + "name": "projects/sample1/locations/sample2/clusters/sample3/tokenAuthUsers/sample4/authTokens/sample5" } request = request_type(**request_init) @@ -18074,33 +24276,34 @@ def test_list_backups_rest_bad_request( response_value.request = mock.Mock() req.return_value = response_value req.return_value.headers = {"header-1": "value-1", "header-2": "value-2"} - client.list_backups(request) + client.get_auth_token(request) @pytest.mark.parametrize( "request_type", [ - cloud_redis_cluster.ListBackupsRequest, + cloud_redis_cluster.GetAuthTokenRequest, dict, ], ) -def test_list_backups_rest_call_success(request_type): +def test_get_auth_token_rest_call_success(request_type): client = CloudRedisClusterClient( credentials=ga_credentials.AnonymousCredentials(), transport="rest" ) # send a request that will satisfy transcoding request_init = { - "parent": "projects/sample1/locations/sample2/backupCollections/sample3" + "name": "projects/sample1/locations/sample2/clusters/sample3/tokenAuthUsers/sample4/authTokens/sample5" } 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 = cloud_redis_cluster.ListBackupsResponse( - next_page_token="next_page_token_value", - unreachable=["unreachable_value"], + return_value = cloud_redis_cluster.AuthToken( + name="name_value", + token="token_value", + state=cloud_redis_cluster.AuthToken.State.ACTIVE, ) # Wrap the value into a proper Response obj @@ -18108,21 +24311,22 @@ def test_list_backups_rest_call_success(request_type): response_value.status_code = 200 # Convert return value to protobuf type - return_value = cloud_redis_cluster.ListBackupsResponse.pb(return_value) + return_value = cloud_redis_cluster.AuthToken.pb(return_value) json_return_value = json_format.MessageToJson(return_value) response_value.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_backups(request) + response = client.get_auth_token(request) # Establish that the response is the type that we expect. - assert isinstance(response, pagers.ListBackupsPager) - assert response.next_page_token == "next_page_token_value" - assert response.unreachable == ["unreachable_value"] + assert isinstance(response, cloud_redis_cluster.AuthToken) + assert response.name == "name_value" + assert response.token == "token_value" + assert response.state == cloud_redis_cluster.AuthToken.State.ACTIVE @pytest.mark.parametrize("null_interceptor", [True, False]) -def test_list_backups_rest_interceptors(null_interceptor): +def test_get_auth_token_rest_interceptors(null_interceptor): transport = transports.CloudRedisClusterRestTransport( credentials=ga_credentials.AnonymousCredentials(), interceptor=None @@ -18135,21 +24339,21 @@ def test_list_backups_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.CloudRedisClusterRestInterceptor, "post_list_backups" + transports.CloudRedisClusterRestInterceptor, "post_get_auth_token" ) as post, mock.patch.object( transports.CloudRedisClusterRestInterceptor, - "post_list_backups_with_metadata", + "post_get_auth_token_with_metadata", ) as post_with_metadata, mock.patch.object( - transports.CloudRedisClusterRestInterceptor, "pre_list_backups" + transports.CloudRedisClusterRestInterceptor, "pre_get_auth_token" ) as pre, ): pre.assert_not_called() post.assert_not_called() post_with_metadata.assert_not_called() - pb_message = cloud_redis_cluster.ListBackupsRequest.pb( - cloud_redis_cluster.ListBackupsRequest() + pb_message = cloud_redis_cluster.GetAuthTokenRequest.pb( + cloud_redis_cluster.GetAuthTokenRequest() ) transcode.return_value = { "method": "post", @@ -18161,24 +24365,21 @@ def test_list_backups_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 = cloud_redis_cluster.ListBackupsResponse.to_json( - cloud_redis_cluster.ListBackupsResponse() + return_value = cloud_redis_cluster.AuthToken.to_json( + cloud_redis_cluster.AuthToken() ) req.return_value.content = return_value - request = cloud_redis_cluster.ListBackupsRequest() + request = cloud_redis_cluster.GetAuthTokenRequest() metadata = [ ("key", "val"), ("cephalopod", "squid"), ] pre.return_value = request, metadata - post.return_value = cloud_redis_cluster.ListBackupsResponse() - post_with_metadata.return_value = ( - cloud_redis_cluster.ListBackupsResponse(), - metadata, - ) + post.return_value = cloud_redis_cluster.AuthToken() + post_with_metadata.return_value = cloud_redis_cluster.AuthToken(), metadata - client.list_backups( + client.get_auth_token( request, metadata=[ ("key", "val"), @@ -18191,14 +24392,14 @@ def test_list_backups_rest_interceptors(null_interceptor): post_with_metadata.assert_called_once() -def test_get_backup_rest_bad_request(request_type=cloud_redis_cluster.GetBackupRequest): +def test_add_token_auth_user_rest_bad_request( + request_type=cloud_redis_cluster.AddTokenAuthUserRequest, +): client = CloudRedisClusterClient( credentials=ga_credentials.AnonymousCredentials(), transport="rest" ) # send a request that will satisfy transcoding - request_init = { - "name": "projects/sample1/locations/sample2/backupCollections/sample3/backups/sample4" - } + request_init = {"cluster": "projects/sample1/locations/sample2/clusters/sample3"} request = request_type(**request_init) # Mock the http request call within the method and fake a BadRequest error. @@ -18214,73 +24415,45 @@ def test_get_backup_rest_bad_request(request_type=cloud_redis_cluster.GetBackupR response_value.request = mock.Mock() req.return_value = response_value req.return_value.headers = {"header-1": "value-1", "header-2": "value-2"} - client.get_backup(request) + client.add_token_auth_user(request) @pytest.mark.parametrize( "request_type", [ - cloud_redis_cluster.GetBackupRequest, + cloud_redis_cluster.AddTokenAuthUserRequest, dict, ], ) -def test_get_backup_rest_call_success(request_type): +def test_add_token_auth_user_rest_call_success(request_type): client = CloudRedisClusterClient( credentials=ga_credentials.AnonymousCredentials(), transport="rest" ) # send a request that will satisfy transcoding - request_init = { - "name": "projects/sample1/locations/sample2/backupCollections/sample3/backups/sample4" - } + request_init = {"cluster": "projects/sample1/locations/sample2/clusters/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 = cloud_redis_cluster.Backup( - name="name_value", - cluster="cluster_value", - cluster_uid="cluster_uid_value", - total_size_bytes=1732, - engine_version="engine_version_value", - node_type=cloud_redis_cluster.NodeType.REDIS_SHARED_CORE_NANO, - replica_count=1384, - shard_count=1178, - backup_type=cloud_redis_cluster.Backup.BackupType.ON_DEMAND, - state=cloud_redis_cluster.Backup.State.CREATING, - uid="uid_value", - ) + return_value = operations_pb2.Operation(name="operations/spam") # 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 = cloud_redis_cluster.Backup.pb(return_value) json_return_value = json_format.MessageToJson(return_value) response_value.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_backup(request) + response = client.add_token_auth_user(request) # Establish that the response is the type that we expect. - assert isinstance(response, cloud_redis_cluster.Backup) - assert response.name == "name_value" - assert response.cluster == "cluster_value" - assert response.cluster_uid == "cluster_uid_value" - assert response.total_size_bytes == 1732 - assert response.engine_version == "engine_version_value" - assert response.node_type == cloud_redis_cluster.NodeType.REDIS_SHARED_CORE_NANO - assert response.replica_count == 1384 - assert response.shard_count == 1178 - assert response.backup_type == cloud_redis_cluster.Backup.BackupType.ON_DEMAND - assert response.state == cloud_redis_cluster.Backup.State.CREATING - assert response.uid == "uid_value" + json_return_value = json_format.MessageToJson(return_value) @pytest.mark.parametrize("null_interceptor", [True, False]) -def test_get_backup_rest_interceptors(null_interceptor): +def test_add_token_auth_user_rest_interceptors(null_interceptor): transport = transports.CloudRedisClusterRestTransport( credentials=ga_credentials.AnonymousCredentials(), interceptor=None @@ -18292,21 +24465,23 @@ def test_get_backup_rest_interceptors(null_interceptor): with ( mock.patch.object(type(client.transport._session), "request") as req, mock.patch.object(path_template, "transcode") as transcode, + mock.patch.object(operation.Operation, "_set_result_from_operation"), mock.patch.object( - transports.CloudRedisClusterRestInterceptor, "post_get_backup" + transports.CloudRedisClusterRestInterceptor, "post_add_token_auth_user" ) as post, mock.patch.object( - transports.CloudRedisClusterRestInterceptor, "post_get_backup_with_metadata" + transports.CloudRedisClusterRestInterceptor, + "post_add_token_auth_user_with_metadata", ) as post_with_metadata, mock.patch.object( - transports.CloudRedisClusterRestInterceptor, "pre_get_backup" + transports.CloudRedisClusterRestInterceptor, "pre_add_token_auth_user" ) as pre, ): pre.assert_not_called() post.assert_not_called() post_with_metadata.assert_not_called() - pb_message = cloud_redis_cluster.GetBackupRequest.pb( - cloud_redis_cluster.GetBackupRequest() + pb_message = cloud_redis_cluster.AddTokenAuthUserRequest.pb( + cloud_redis_cluster.AddTokenAuthUserRequest() ) transcode.return_value = { "method": "post", @@ -18318,19 +24493,19 @@ def test_get_backup_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 = cloud_redis_cluster.Backup.to_json(cloud_redis_cluster.Backup()) + return_value = json_format.MessageToJson(operations_pb2.Operation()) req.return_value.content = return_value - request = cloud_redis_cluster.GetBackupRequest() + request = cloud_redis_cluster.AddTokenAuthUserRequest() metadata = [ ("key", "val"), ("cephalopod", "squid"), ] pre.return_value = request, metadata - post.return_value = cloud_redis_cluster.Backup() - post_with_metadata.return_value = cloud_redis_cluster.Backup(), metadata + post.return_value = operations_pb2.Operation() + post_with_metadata.return_value = operations_pb2.Operation(), metadata - client.get_backup( + client.add_token_auth_user( request, metadata=[ ("key", "val"), @@ -18343,15 +24518,15 @@ def test_get_backup_rest_interceptors(null_interceptor): post_with_metadata.assert_called_once() -def test_delete_backup_rest_bad_request( - request_type=cloud_redis_cluster.DeleteBackupRequest, +def test_delete_token_auth_user_rest_bad_request( + request_type=cloud_redis_cluster.DeleteTokenAuthUserRequest, ): client = CloudRedisClusterClient( credentials=ga_credentials.AnonymousCredentials(), transport="rest" ) # send a request that will satisfy transcoding request_init = { - "name": "projects/sample1/locations/sample2/backupCollections/sample3/backups/sample4" + "name": "projects/sample1/locations/sample2/clusters/sample3/tokenAuthUsers/sample4" } request = request_type(**request_init) @@ -18368,24 +24543,24 @@ def test_delete_backup_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_backup(request) + client.delete_token_auth_user(request) @pytest.mark.parametrize( "request_type", [ - cloud_redis_cluster.DeleteBackupRequest, + cloud_redis_cluster.DeleteTokenAuthUserRequest, dict, ], ) -def test_delete_backup_rest_call_success(request_type): +def test_delete_token_auth_user_rest_call_success(request_type): client = CloudRedisClusterClient( credentials=ga_credentials.AnonymousCredentials(), transport="rest" ) # send a request that will satisfy transcoding request_init = { - "name": "projects/sample1/locations/sample2/backupCollections/sample3/backups/sample4" + "name": "projects/sample1/locations/sample2/clusters/sample3/tokenAuthUsers/sample4" } request = request_type(**request_init) @@ -18401,14 +24576,14 @@ def test_delete_backup_rest_call_success(request_type): response_value.content = json_return_value.encode("UTF-8") req.return_value = response_value req.return_value.headers = {"header-1": "value-1", "header-2": "value-2"} - response = client.delete_backup(request) + response = client.delete_token_auth_user(request) # Establish that the response is the type that we expect. json_return_value = json_format.MessageToJson(return_value) @pytest.mark.parametrize("null_interceptor", [True, False]) -def test_delete_backup_rest_interceptors(null_interceptor): +def test_delete_token_auth_user_rest_interceptors(null_interceptor): transport = transports.CloudRedisClusterRestTransport( credentials=ga_credentials.AnonymousCredentials(), interceptor=None @@ -18422,21 +24597,21 @@ def test_delete_backup_rest_interceptors(null_interceptor): mock.patch.object(path_template, "transcode") as transcode, mock.patch.object(operation.Operation, "_set_result_from_operation"), mock.patch.object( - transports.CloudRedisClusterRestInterceptor, "post_delete_backup" + transports.CloudRedisClusterRestInterceptor, "post_delete_token_auth_user" ) as post, mock.patch.object( transports.CloudRedisClusterRestInterceptor, - "post_delete_backup_with_metadata", + "post_delete_token_auth_user_with_metadata", ) as post_with_metadata, mock.patch.object( - transports.CloudRedisClusterRestInterceptor, "pre_delete_backup" + transports.CloudRedisClusterRestInterceptor, "pre_delete_token_auth_user" ) as pre, ): pre.assert_not_called() post.assert_not_called() post_with_metadata.assert_not_called() - pb_message = cloud_redis_cluster.DeleteBackupRequest.pb( - cloud_redis_cluster.DeleteBackupRequest() + pb_message = cloud_redis_cluster.DeleteTokenAuthUserRequest.pb( + cloud_redis_cluster.DeleteTokenAuthUserRequest() ) transcode.return_value = { "method": "post", @@ -18451,7 +24626,7 @@ def test_delete_backup_rest_interceptors(null_interceptor): return_value = json_format.MessageToJson(operations_pb2.Operation()) req.return_value.content = return_value - request = cloud_redis_cluster.DeleteBackupRequest() + request = cloud_redis_cluster.DeleteTokenAuthUserRequest() metadata = [ ("key", "val"), ("cephalopod", "squid"), @@ -18460,7 +24635,7 @@ def test_delete_backup_rest_interceptors(null_interceptor): post.return_value = operations_pb2.Operation() post_with_metadata.return_value = operations_pb2.Operation(), metadata - client.delete_backup( + client.delete_token_auth_user( request, metadata=[ ("key", "val"), @@ -18473,15 +24648,15 @@ def test_delete_backup_rest_interceptors(null_interceptor): post_with_metadata.assert_called_once() -def test_export_backup_rest_bad_request( - request_type=cloud_redis_cluster.ExportBackupRequest, +def test_add_auth_token_rest_bad_request( + request_type=cloud_redis_cluster.AddAuthTokenRequest, ): client = CloudRedisClusterClient( credentials=ga_credentials.AnonymousCredentials(), transport="rest" ) # send a request that will satisfy transcoding request_init = { - "name": "projects/sample1/locations/sample2/backupCollections/sample3/backups/sample4" + "token_auth_user": "projects/sample1/locations/sample2/clusters/sample3/tokenAuthUsers/sample4" } request = request_type(**request_init) @@ -18498,24 +24673,24 @@ def test_export_backup_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.export_backup(request) + client.add_auth_token(request) @pytest.mark.parametrize( "request_type", [ - cloud_redis_cluster.ExportBackupRequest, + cloud_redis_cluster.AddAuthTokenRequest, dict, ], ) -def test_export_backup_rest_call_success(request_type): +def test_add_auth_token_rest_call_success(request_type): client = CloudRedisClusterClient( credentials=ga_credentials.AnonymousCredentials(), transport="rest" ) # send a request that will satisfy transcoding request_init = { - "name": "projects/sample1/locations/sample2/backupCollections/sample3/backups/sample4" + "token_auth_user": "projects/sample1/locations/sample2/clusters/sample3/tokenAuthUsers/sample4" } request = request_type(**request_init) @@ -18531,14 +24706,14 @@ def test_export_backup_rest_call_success(request_type): response_value.content = json_return_value.encode("UTF-8") req.return_value = response_value req.return_value.headers = {"header-1": "value-1", "header-2": "value-2"} - response = client.export_backup(request) + response = client.add_auth_token(request) # Establish that the response is the type that we expect. json_return_value = json_format.MessageToJson(return_value) @pytest.mark.parametrize("null_interceptor", [True, False]) -def test_export_backup_rest_interceptors(null_interceptor): +def test_add_auth_token_rest_interceptors(null_interceptor): transport = transports.CloudRedisClusterRestTransport( credentials=ga_credentials.AnonymousCredentials(), interceptor=None @@ -18552,21 +24727,21 @@ def test_export_backup_rest_interceptors(null_interceptor): mock.patch.object(path_template, "transcode") as transcode, mock.patch.object(operation.Operation, "_set_result_from_operation"), mock.patch.object( - transports.CloudRedisClusterRestInterceptor, "post_export_backup" + transports.CloudRedisClusterRestInterceptor, "post_add_auth_token" ) as post, mock.patch.object( transports.CloudRedisClusterRestInterceptor, - "post_export_backup_with_metadata", + "post_add_auth_token_with_metadata", ) as post_with_metadata, mock.patch.object( - transports.CloudRedisClusterRestInterceptor, "pre_export_backup" + transports.CloudRedisClusterRestInterceptor, "pre_add_auth_token" ) as pre, ): pre.assert_not_called() post.assert_not_called() post_with_metadata.assert_not_called() - pb_message = cloud_redis_cluster.ExportBackupRequest.pb( - cloud_redis_cluster.ExportBackupRequest() + pb_message = cloud_redis_cluster.AddAuthTokenRequest.pb( + cloud_redis_cluster.AddAuthTokenRequest() ) transcode.return_value = { "method": "post", @@ -18581,7 +24756,7 @@ def test_export_backup_rest_interceptors(null_interceptor): return_value = json_format.MessageToJson(operations_pb2.Operation()) req.return_value.content = return_value - request = cloud_redis_cluster.ExportBackupRequest() + request = cloud_redis_cluster.AddAuthTokenRequest() metadata = [ ("key", "val"), ("cephalopod", "squid"), @@ -18590,7 +24765,7 @@ def test_export_backup_rest_interceptors(null_interceptor): post.return_value = operations_pb2.Operation() post_with_metadata.return_value = operations_pb2.Operation(), metadata - client.export_backup( + client.add_auth_token( request, metadata=[ ("key", "val"), @@ -18603,14 +24778,16 @@ def test_export_backup_rest_interceptors(null_interceptor): post_with_metadata.assert_called_once() -def test_backup_cluster_rest_bad_request( - request_type=cloud_redis_cluster.BackupClusterRequest, +def test_delete_auth_token_rest_bad_request( + request_type=cloud_redis_cluster.DeleteAuthTokenRequest, ): client = CloudRedisClusterClient( credentials=ga_credentials.AnonymousCredentials(), transport="rest" ) # send a request that will satisfy transcoding - request_init = {"name": "projects/sample1/locations/sample2/clusters/sample3"} + request_init = { + "name": "projects/sample1/locations/sample2/clusters/sample3/tokenAuthUsers/sample4/authTokens/sample5" + } request = request_type(**request_init) # Mock the http request call within the method and fake a BadRequest error. @@ -18626,23 +24803,25 @@ def test_backup_cluster_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.backup_cluster(request) + client.delete_auth_token(request) @pytest.mark.parametrize( "request_type", [ - cloud_redis_cluster.BackupClusterRequest, + cloud_redis_cluster.DeleteAuthTokenRequest, dict, ], ) -def test_backup_cluster_rest_call_success(request_type): +def test_delete_auth_token_rest_call_success(request_type): client = CloudRedisClusterClient( credentials=ga_credentials.AnonymousCredentials(), transport="rest" ) # send a request that will satisfy transcoding - request_init = {"name": "projects/sample1/locations/sample2/clusters/sample3"} + request_init = { + "name": "projects/sample1/locations/sample2/clusters/sample3/tokenAuthUsers/sample4/authTokens/sample5" + } request = request_type(**request_init) # Mock the http request call within the method and fake a response. @@ -18657,14 +24836,14 @@ def test_backup_cluster_rest_call_success(request_type): response_value.content = json_return_value.encode("UTF-8") req.return_value = response_value req.return_value.headers = {"header-1": "value-1", "header-2": "value-2"} - response = client.backup_cluster(request) + response = client.delete_auth_token(request) # Establish that the response is the type that we expect. json_return_value = json_format.MessageToJson(return_value) @pytest.mark.parametrize("null_interceptor", [True, False]) -def test_backup_cluster_rest_interceptors(null_interceptor): +def test_delete_auth_token_rest_interceptors(null_interceptor): transport = transports.CloudRedisClusterRestTransport( credentials=ga_credentials.AnonymousCredentials(), interceptor=None @@ -18678,21 +24857,21 @@ def test_backup_cluster_rest_interceptors(null_interceptor): mock.patch.object(path_template, "transcode") as transcode, mock.patch.object(operation.Operation, "_set_result_from_operation"), mock.patch.object( - transports.CloudRedisClusterRestInterceptor, "post_backup_cluster" + transports.CloudRedisClusterRestInterceptor, "post_delete_auth_token" ) as post, mock.patch.object( transports.CloudRedisClusterRestInterceptor, - "post_backup_cluster_with_metadata", + "post_delete_auth_token_with_metadata", ) as post_with_metadata, mock.patch.object( - transports.CloudRedisClusterRestInterceptor, "pre_backup_cluster" + transports.CloudRedisClusterRestInterceptor, "pre_delete_auth_token" ) as pre, ): pre.assert_not_called() post.assert_not_called() post_with_metadata.assert_not_called() - pb_message = cloud_redis_cluster.BackupClusterRequest.pb( - cloud_redis_cluster.BackupClusterRequest() + pb_message = cloud_redis_cluster.DeleteAuthTokenRequest.pb( + cloud_redis_cluster.DeleteAuthTokenRequest() ) transcode.return_value = { "method": "post", @@ -18707,7 +24886,7 @@ def test_backup_cluster_rest_interceptors(null_interceptor): return_value = json_format.MessageToJson(operations_pb2.Operation()) req.return_value.content = return_value - request = cloud_redis_cluster.BackupClusterRequest() + request = cloud_redis_cluster.DeleteAuthTokenRequest() metadata = [ ("key", "val"), ("cephalopod", "squid"), @@ -18716,7 +24895,7 @@ def test_backup_cluster_rest_interceptors(null_interceptor): post.return_value = operations_pb2.Operation() post_with_metadata.return_value = operations_pb2.Operation(), metadata - client.backup_cluster( + client.delete_auth_token( request, metadata=[ ("key", "val"), @@ -19550,6 +25729,168 @@ def test_backup_cluster_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_token_auth_users_empty_call_rest(): + client = CloudRedisClusterClient( + credentials=ga_credentials.AnonymousCredentials(), + transport="rest", + ) + + # Mock the actual call, and fake the request. + with mock.patch.object( + type(client.transport.list_token_auth_users), "__call__" + ) as call: + client.list_token_auth_users(request=None) + + # Establish that the underlying stub method was called. + call.assert_called() + _, args, _ = call.mock_calls[0] + request_msg = cloud_redis_cluster.ListTokenAuthUsersRequest() + 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_token_auth_user_empty_call_rest(): + client = CloudRedisClusterClient( + credentials=ga_credentials.AnonymousCredentials(), + transport="rest", + ) + + # Mock the actual call, and fake the request. + with mock.patch.object( + type(client.transport.get_token_auth_user), "__call__" + ) as call: + client.get_token_auth_user(request=None) + + # Establish that the underlying stub method was called. + call.assert_called() + _, args, _ = call.mock_calls[0] + request_msg = cloud_redis_cluster.GetTokenAuthUserRequest() + 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_auth_tokens_empty_call_rest(): + client = CloudRedisClusterClient( + credentials=ga_credentials.AnonymousCredentials(), + transport="rest", + ) + + # Mock the actual call, and fake the request. + with mock.patch.object(type(client.transport.list_auth_tokens), "__call__") as call: + client.list_auth_tokens(request=None) + + # Establish that the underlying stub method was called. + call.assert_called() + _, args, _ = call.mock_calls[0] + request_msg = cloud_redis_cluster.ListAuthTokensRequest() + 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_auth_token_empty_call_rest(): + client = CloudRedisClusterClient( + credentials=ga_credentials.AnonymousCredentials(), + transport="rest", + ) + + # Mock the actual call, and fake the request. + with mock.patch.object(type(client.transport.get_auth_token), "__call__") as call: + client.get_auth_token(request=None) + + # Establish that the underlying stub method was called. + call.assert_called() + _, args, _ = call.mock_calls[0] + request_msg = cloud_redis_cluster.GetAuthTokenRequest() + 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_add_token_auth_user_empty_call_rest(): + client = CloudRedisClusterClient( + credentials=ga_credentials.AnonymousCredentials(), + transport="rest", + ) + + # Mock the actual call, and fake the request. + with mock.patch.object( + type(client.transport.add_token_auth_user), "__call__" + ) as call: + client.add_token_auth_user(request=None) + + # Establish that the underlying stub method was called. + call.assert_called() + _, args, _ = call.mock_calls[0] + request_msg = cloud_redis_cluster.AddTokenAuthUserRequest() + 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_token_auth_user_empty_call_rest(): + client = CloudRedisClusterClient( + credentials=ga_credentials.AnonymousCredentials(), + transport="rest", + ) + + # Mock the actual call, and fake the request. + with mock.patch.object( + type(client.transport.delete_token_auth_user), "__call__" + ) as call: + client.delete_token_auth_user(request=None) + + # Establish that the underlying stub method was called. + call.assert_called() + _, args, _ = call.mock_calls[0] + request_msg = cloud_redis_cluster.DeleteTokenAuthUserRequest() + 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_add_auth_token_empty_call_rest(): + client = CloudRedisClusterClient( + credentials=ga_credentials.AnonymousCredentials(), + transport="rest", + ) + + # Mock the actual call, and fake the request. + with mock.patch.object(type(client.transport.add_auth_token), "__call__") as call: + client.add_auth_token(request=None) + + # Establish that the underlying stub method was called. + call.assert_called() + _, args, _ = call.mock_calls[0] + request_msg = cloud_redis_cluster.AddAuthTokenRequest() + 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_auth_token_empty_call_rest(): + client = CloudRedisClusterClient( + credentials=ga_credentials.AnonymousCredentials(), + transport="rest", + ) + + # Mock the actual call, and fake the request. + with mock.patch.object( + type(client.transport.delete_auth_token), "__call__" + ) as call: + client.delete_auth_token(request=None) + + # Establish that the underlying stub method was called. + call.assert_called() + _, args, _ = call.mock_calls[0] + request_msg = cloud_redis_cluster.DeleteAuthTokenRequest() + assert args[0] == request_msg + + def test_cloud_redis_cluster_rest_lro_client(): client = CloudRedisClusterClient( credentials=ga_credentials.AnonymousCredentials(), @@ -19622,6 +25963,14 @@ def test_cloud_redis_cluster_base_transport(): "delete_backup", "export_backup", "backup_cluster", + "list_token_auth_users", + "get_token_auth_user", + "list_auth_tokens", + "get_auth_token", + "add_token_auth_user", + "delete_token_auth_user", + "add_auth_token", + "delete_auth_token", "get_location", "list_locations", "get_operation", @@ -19966,6 +26315,30 @@ def test_cloud_redis_cluster_client_transport_session_collision(transport_name): session1 = client1.transport.backup_cluster._session session2 = client2.transport.backup_cluster._session assert session1 != session2 + session1 = client1.transport.list_token_auth_users._session + session2 = client2.transport.list_token_auth_users._session + assert session1 != session2 + session1 = client1.transport.get_token_auth_user._session + session2 = client2.transport.get_token_auth_user._session + assert session1 != session2 + session1 = client1.transport.list_auth_tokens._session + session2 = client2.transport.list_auth_tokens._session + assert session1 != session2 + session1 = client1.transport.get_auth_token._session + session2 = client2.transport.get_auth_token._session + assert session1 != session2 + session1 = client1.transport.add_token_auth_user._session + session2 = client2.transport.add_token_auth_user._session + assert session1 != session2 + session1 = client1.transport.delete_token_auth_user._session + session2 = client2.transport.delete_token_auth_user._session + assert session1 != session2 + session1 = client1.transport.add_auth_token._session + session2 = client2.transport.add_auth_token._session + assert session1 != session2 + session1 = client1.transport.delete_auth_token._session + session2 = client2.transport.delete_auth_token._session + assert session1 != session2 def test_cloud_redis_cluster_grpc_transport_channel(): @@ -20188,11 +26561,45 @@ def test_parse_acl_policy_revision_path(): assert expected == actual -def test_backup_path(): +def test_auth_token_path(): project = "whelk" location = "octopus" - backup_collection = "oyster" - backup = "nudibranch" + cluster = "oyster" + token_auth_user = "nudibranch" + auth_token = "cuttlefish" + expected = "projects/{project}/locations/{location}/clusters/{cluster}/tokenAuthUsers/{token_auth_user}/authTokens/{auth_token}".format( + project=project, + location=location, + cluster=cluster, + token_auth_user=token_auth_user, + auth_token=auth_token, + ) + actual = CloudRedisClusterClient.auth_token_path( + project, location, cluster, token_auth_user, auth_token + ) + assert expected == actual + + +def test_parse_auth_token_path(): + expected = { + "project": "mussel", + "location": "winkle", + "cluster": "nautilus", + "token_auth_user": "scallop", + "auth_token": "abalone", + } + path = CloudRedisClusterClient.auth_token_path(**expected) + + # Check that the path construction is reversible. + actual = CloudRedisClusterClient.parse_auth_token_path(path) + assert expected == actual + + +def test_backup_path(): + project = "squid" + location = "clam" + backup_collection = "whelk" + backup = "octopus" expected = "projects/{project}/locations/{location}/backupCollections/{backup_collection}/backups/{backup}".format( project=project, location=location, @@ -20207,10 +26614,10 @@ def test_backup_path(): def test_parse_backup_path(): expected = { - "project": "cuttlefish", - "location": "mussel", - "backup_collection": "winkle", - "backup": "nautilus", + "project": "oyster", + "location": "nudibranch", + "backup_collection": "cuttlefish", + "backup": "mussel", } path = CloudRedisClusterClient.backup_path(**expected) @@ -20220,9 +26627,9 @@ def test_parse_backup_path(): def test_backup_collection_path(): - project = "scallop" - location = "abalone" - backup_collection = "squid" + project = "winkle" + location = "nautilus" + backup_collection = "scallop" expected = "projects/{project}/locations/{location}/backupCollections/{backup_collection}".format( project=project, location=location, @@ -20236,9 +26643,9 @@ def test_backup_collection_path(): def test_parse_backup_collection_path(): expected = { - "project": "clam", - "location": "whelk", - "backup_collection": "octopus", + "project": "abalone", + "location": "squid", + "backup_collection": "clam", } path = CloudRedisClusterClient.backup_collection_path(**expected) @@ -20248,9 +26655,9 @@ def test_parse_backup_collection_path(): def test_ca_pool_path(): - project = "oyster" - location = "nudibranch" - ca_pool = "cuttlefish" + project = "whelk" + location = "octopus" + ca_pool = "oyster" expected = "projects/{project}/locations/{location}/caPools/{ca_pool}".format( project=project, location=location, @@ -20262,9 +26669,9 @@ def test_ca_pool_path(): def test_parse_ca_pool_path(): expected = { - "project": "mussel", - "location": "winkle", - "ca_pool": "nautilus", + "project": "nudibranch", + "location": "cuttlefish", + "ca_pool": "mussel", } path = CloudRedisClusterClient.ca_pool_path(**expected) @@ -20274,9 +26681,9 @@ def test_parse_ca_pool_path(): def test_certificate_authority_path(): - project = "scallop" - location = "abalone" - cluster = "squid" + project = "winkle" + location = "nautilus" + cluster = "scallop" expected = "projects/{project}/locations/{location}/clusters/{cluster}/certificateAuthority".format( project=project, location=location, @@ -20290,9 +26697,9 @@ def test_certificate_authority_path(): def test_parse_certificate_authority_path(): expected = { - "project": "clam", - "location": "whelk", - "cluster": "octopus", + "project": "abalone", + "location": "squid", + "cluster": "clam", } path = CloudRedisClusterClient.certificate_authority_path(**expected) @@ -20302,9 +26709,9 @@ def test_parse_certificate_authority_path(): def test_cluster_path(): - project = "oyster" - location = "nudibranch" - cluster = "cuttlefish" + project = "whelk" + location = "octopus" + cluster = "oyster" expected = "projects/{project}/locations/{location}/clusters/{cluster}".format( project=project, location=location, @@ -20316,9 +26723,9 @@ def test_cluster_path(): def test_parse_cluster_path(): expected = { - "project": "mussel", - "location": "winkle", - "cluster": "nautilus", + "project": "nudibranch", + "location": "cuttlefish", + "cluster": "mussel", } path = CloudRedisClusterClient.cluster_path(**expected) @@ -20328,10 +26735,10 @@ def test_parse_cluster_path(): def test_crypto_key_path(): - project = "scallop" - location = "abalone" - key_ring = "squid" - crypto_key = "clam" + project = "winkle" + location = "nautilus" + key_ring = "scallop" + crypto_key = "abalone" expected = "projects/{project}/locations/{location}/keyRings/{key_ring}/cryptoKeys/{crypto_key}".format( project=project, location=location, @@ -20346,10 +26753,10 @@ def test_crypto_key_path(): def test_parse_crypto_key_path(): expected = { - "project": "whelk", - "location": "octopus", - "key_ring": "oyster", - "crypto_key": "nudibranch", + "project": "squid", + "location": "clam", + "key_ring": "whelk", + "crypto_key": "octopus", } path = CloudRedisClusterClient.crypto_key_path(**expected) @@ -20359,11 +26766,11 @@ def test_parse_crypto_key_path(): def test_crypto_key_version_path(): - project = "cuttlefish" - location = "mussel" - key_ring = "winkle" - crypto_key = "nautilus" - crypto_key_version = "scallop" + project = "oyster" + location = "nudibranch" + key_ring = "cuttlefish" + crypto_key = "mussel" + crypto_key_version = "winkle" expected = "projects/{project}/locations/{location}/keyRings/{key_ring}/cryptoKeys/{crypto_key}/cryptoKeyVersions/{crypto_key_version}".format( project=project, location=location, @@ -20379,11 +26786,11 @@ def test_crypto_key_version_path(): def test_parse_crypto_key_version_path(): expected = { - "project": "abalone", - "location": "squid", - "key_ring": "clam", - "crypto_key": "whelk", - "crypto_key_version": "octopus", + "project": "nautilus", + "location": "scallop", + "key_ring": "abalone", + "crypto_key": "squid", + "crypto_key_version": "clam", } path = CloudRedisClusterClient.crypto_key_version_path(**expected) @@ -20393,9 +26800,9 @@ def test_parse_crypto_key_version_path(): def test_forwarding_rule_path(): - project = "oyster" - region = "nudibranch" - forwarding_rule = "cuttlefish" + project = "whelk" + region = "octopus" + forwarding_rule = "oyster" expected = ( "projects/{project}/regions/{region}/forwardingRules/{forwarding_rule}".format( project=project, @@ -20411,9 +26818,9 @@ def test_forwarding_rule_path(): def test_parse_forwarding_rule_path(): expected = { - "project": "mussel", - "region": "winkle", - "forwarding_rule": "nautilus", + "project": "nudibranch", + "region": "cuttlefish", + "forwarding_rule": "mussel", } path = CloudRedisClusterClient.forwarding_rule_path(**expected) @@ -20423,8 +26830,8 @@ def test_parse_forwarding_rule_path(): def test_network_path(): - project = "scallop" - network = "abalone" + project = "winkle" + network = "nautilus" expected = "projects/{project}/global/networks/{network}".format( project=project, network=network, @@ -20435,8 +26842,8 @@ def test_network_path(): def test_parse_network_path(): expected = { - "project": "squid", - "network": "clam", + "project": "scallop", + "network": "abalone", } path = CloudRedisClusterClient.network_path(**expected) @@ -20446,9 +26853,9 @@ def test_parse_network_path(): def test_service_attachment_path(): - project = "whelk" - region = "octopus" - service_attachment = "oyster" + project = "squid" + region = "clam" + service_attachment = "whelk" expected = "projects/{project}/regions/{region}/serviceAttachments/{service_attachment}".format( project=project, region=region, @@ -20462,9 +26869,9 @@ def test_service_attachment_path(): def test_parse_service_attachment_path(): expected = { - "project": "nudibranch", - "region": "cuttlefish", - "service_attachment": "mussel", + "project": "octopus", + "region": "oyster", + "service_attachment": "nudibranch", } path = CloudRedisClusterClient.service_attachment_path(**expected) @@ -20474,8 +26881,8 @@ def test_parse_service_attachment_path(): def test_shared_regional_certificate_authority_path(): - project = "winkle" - location = "nautilus" + project = "cuttlefish" + location = "mussel" expected = "projects/{project}/locations/{location}/sharedRegionalCertificateAuthority".format( project=project, location=location, @@ -20488,8 +26895,8 @@ def test_shared_regional_certificate_authority_path(): def test_parse_shared_regional_certificate_authority_path(): expected = { - "project": "scallop", - "location": "abalone", + "project": "winkle", + "location": "nautilus", } path = CloudRedisClusterClient.shared_regional_certificate_authority_path( **expected @@ -20502,8 +26909,39 @@ def test_parse_shared_regional_certificate_authority_path(): assert expected == actual +def test_token_auth_user_path(): + project = "scallop" + location = "abalone" + cluster = "squid" + token_auth_user = "clam" + expected = "projects/{project}/locations/{location}/clusters/{cluster}/tokenAuthUsers/{token_auth_user}".format( + project=project, + location=location, + cluster=cluster, + token_auth_user=token_auth_user, + ) + actual = CloudRedisClusterClient.token_auth_user_path( + project, location, cluster, token_auth_user + ) + assert expected == actual + + +def test_parse_token_auth_user_path(): + expected = { + "project": "whelk", + "location": "octopus", + "cluster": "oyster", + "token_auth_user": "nudibranch", + } + path = CloudRedisClusterClient.token_auth_user_path(**expected) + + # Check that the path construction is reversible. + actual = CloudRedisClusterClient.parse_token_auth_user_path(path) + assert expected == actual + + def test_common_billing_account_path(): - billing_account = "squid" + billing_account = "cuttlefish" expected = "billingAccounts/{billing_account}".format( billing_account=billing_account, ) @@ -20513,7 +26951,7 @@ def test_common_billing_account_path(): def test_parse_common_billing_account_path(): expected = { - "billing_account": "clam", + "billing_account": "mussel", } path = CloudRedisClusterClient.common_billing_account_path(**expected) @@ -20523,7 +26961,7 @@ def test_parse_common_billing_account_path(): def test_common_folder_path(): - folder = "whelk" + folder = "winkle" expected = "folders/{folder}".format( folder=folder, ) @@ -20533,7 +26971,7 @@ def test_common_folder_path(): def test_parse_common_folder_path(): expected = { - "folder": "octopus", + "folder": "nautilus", } path = CloudRedisClusterClient.common_folder_path(**expected) @@ -20543,7 +26981,7 @@ def test_parse_common_folder_path(): def test_common_organization_path(): - organization = "oyster" + organization = "scallop" expected = "organizations/{organization}".format( organization=organization, ) @@ -20553,7 +26991,7 @@ def test_common_organization_path(): def test_parse_common_organization_path(): expected = { - "organization": "nudibranch", + "organization": "abalone", } path = CloudRedisClusterClient.common_organization_path(**expected) @@ -20563,7 +27001,7 @@ def test_parse_common_organization_path(): def test_common_project_path(): - project = "cuttlefish" + project = "squid" expected = "projects/{project}".format( project=project, ) @@ -20573,7 +27011,7 @@ def test_common_project_path(): def test_parse_common_project_path(): expected = { - "project": "mussel", + "project": "clam", } path = CloudRedisClusterClient.common_project_path(**expected) @@ -20583,8 +27021,8 @@ def test_parse_common_project_path(): def test_common_location_path(): - project = "winkle" - location = "nautilus" + project = "whelk" + location = "octopus" expected = "projects/{project}/locations/{location}".format( project=project, location=location, @@ -20595,8 +27033,8 @@ def test_common_location_path(): def test_parse_common_location_path(): expected = { - "project": "scallop", - "location": "abalone", + "project": "oyster", + "location": "nudibranch", } path = CloudRedisClusterClient.common_location_path(**expected) diff --git a/packages/google-cloud-spanner/google/cloud/spanner_admin_instance_v1/types/spanner_instance_admin.py b/packages/google-cloud-spanner/google/cloud/spanner_admin_instance_v1/types/spanner_instance_admin.py index 054376484e58..1bbcfe47d86c 100644 --- a/packages/google-cloud-spanner/google/cloud/spanner_admin_instance_v1/types/spanner_instance_admin.py +++ b/packages/google-cloud-spanner/google/cloud/spanner_admin_instance_v1/types/spanner_instance_admin.py @@ -242,6 +242,19 @@ class InstanceConfig(proto.Message): Output only. Describes whether free instances are available to be created in this instance configuration. + allowed_processing_units (MutableSequence[google.cloud.spanner_admin_instance_v1.types.InstanceConfig.AllowedProcessingUnits]): + Output only. Defines the ranges of allowed processing units + supported by this instance configuration. If multiple ranges + are specified, an instance using this configuration may use + a valid increment in any of the given ranges. For example, + an allowed_processing_units specification of + ``[{min_processing_units:100, max_processing_units:900, processing_unit_increment:100}, {min_processing_units:1000, processing_unit_increment:1000}]`` + specifies that the instance configuration supports instances + with quantities of processing units in multiples of 100 + processing units (100, 200, 300 and so on) up to and + including 900 processing units and quantities that are at + least 1000 processing units and multiples of 1000 processing + units (1000, 2000, 3000 and so on). quorum_type (google.cloud.spanner_admin_instance_v1.types.InstanceConfig.QuorumType): Output only. The ``QuorumType`` of the instance configuration. @@ -342,6 +355,38 @@ class QuorumType(proto.Enum): DUAL_REGION = 2 MULTI_REGION = 3 + class AllowedProcessingUnits(proto.Message): + r"""Defines a range of processing units supported by an instance + configuration. + + Attributes: + min_processing_units (int): + The minimum value of processing units + applicable to this interval, inclusive. + max_processing_units (int): + The maximum value of processing units + applicable to this interval, inclusive. If + unset, there is no predefined limit to the + supported number of processing units, although + project quota limits still apply. + processing_unit_increment (int): + Allowed increments of processing units + between “min” and “max”. + """ + + min_processing_units: int = proto.Field( + proto.INT32, + number=1, + ) + max_processing_units: int = proto.Field( + proto.INT32, + number=2, + ) + processing_unit_increment: int = proto.Field( + proto.INT32, + number=3, + ) + name: str = proto.Field( proto.STRING, number=1, @@ -396,6 +441,13 @@ class QuorumType(proto.Enum): number=12, enum=FreeInstanceAvailability, ) + allowed_processing_units: MutableSequence[AllowedProcessingUnits] = ( + proto.RepeatedField( + proto.MESSAGE, + number=13, + message=AllowedProcessingUnits, + ) + ) quorum_type: QuorumType = proto.Field( proto.ENUM, number=18, diff --git a/packages/google-cloud-storage-control/google/cloud/storage_control_v2/services/storage_control/async_client.py b/packages/google-cloud-storage-control/google/cloud/storage_control_v2/services/storage_control/async_client.py index 100d965ef3c3..c2e4232868de 100644 --- a/packages/google-cloud-storage-control/google/cloud/storage_control_v2/services/storage_control/async_client.py +++ b/packages/google-cloud-storage-control/google/cloud/storage_control_v2/services/storage_control/async_client.py @@ -843,6 +843,8 @@ async def sample_list_folders(): gapic_v1.routing_header.to_grpc_metadata(header_params), ) + setup_request_id(request, "request_id", False) + # Validate the universe domain. self._client._validate_universe_domain() @@ -1921,6 +1923,8 @@ async def sample_update_managed_folder(): gapic_v1.routing_header.to_grpc_metadata(header_params), ) + setup_request_id(request, "request_id", False) + # Validate the universe domain. self._client._validate_universe_domain() @@ -2982,6 +2986,8 @@ async def sample_create_rapid_cache(): gapic_v1.routing_header.to_grpc_metadata(header_params), ) + setup_request_id(request, "request_id", False) + # Validate the universe domain. self._client._validate_universe_domain() @@ -3131,6 +3137,8 @@ async def sample_update_rapid_cache(): gapic_v1.routing_header.to_grpc_metadata(header_params), ) + setup_request_id(request, "request_id", False) + # Validate the universe domain. self._client._validate_universe_domain() @@ -3265,6 +3273,8 @@ async def sample_disable_rapid_cache(): gapic_v1.routing_header.to_grpc_metadata(header_params), ) + setup_request_id(request, "request_id", False) + # Validate the universe domain. self._client._validate_universe_domain() @@ -3389,6 +3399,8 @@ async def sample_get_rapid_cache(): gapic_v1.routing_header.to_grpc_metadata(header_params), ) + setup_request_id(request, "request_id", False) + # Validate the universe domain. self._client._validate_universe_domain() @@ -3509,6 +3521,8 @@ async def sample_list_rapid_caches(): gapic_v1.routing_header.to_grpc_metadata(header_params), ) + setup_request_id(request, "request_id", False) + # Validate the universe domain. self._client._validate_universe_domain() @@ -3766,6 +3780,8 @@ async def sample_update_project_intelligence_config(): ), ) + setup_request_id(request, "request_id", False) + # Validate the universe domain. self._client._validate_universe_domain() @@ -4012,6 +4028,8 @@ async def sample_update_folder_intelligence_config(): ), ) + setup_request_id(request, "request_id", False) + # Validate the universe domain. self._client._validate_universe_domain() @@ -4262,6 +4280,8 @@ async def sample_update_organization_intelligence_config(): ), ) + setup_request_id(request, "request_id", False) + # Validate the universe domain. self._client._validate_universe_domain() diff --git a/packages/google-cloud-storage-control/google/cloud/storage_control_v2/services/storage_control/client.py b/packages/google-cloud-storage-control/google/cloud/storage_control_v2/services/storage_control/client.py index 399494a25a6e..49a98dede312 100644 --- a/packages/google-cloud-storage-control/google/cloud/storage_control_v2/services/storage_control/client.py +++ b/packages/google-cloud-storage-control/google/cloud/storage_control_v2/services/storage_control/client.py @@ -1282,6 +1282,8 @@ def sample_list_folders(): gapic_v1.routing_header.to_grpc_metadata(header_params), ) + setup_request_id(request, "request_id", False) + # Validate the universe domain. self._validate_universe_domain() @@ -2336,6 +2338,8 @@ def sample_update_managed_folder(): gapic_v1.routing_header.to_grpc_metadata(header_params), ) + setup_request_id(request, "request_id", False) + # Validate the universe domain. self._validate_universe_domain() @@ -3373,6 +3377,8 @@ def sample_create_rapid_cache(): gapic_v1.routing_header.to_grpc_metadata(header_params), ) + setup_request_id(request, "request_id", False) + # Validate the universe domain. self._validate_universe_domain() @@ -3519,6 +3525,8 @@ def sample_update_rapid_cache(): gapic_v1.routing_header.to_grpc_metadata(header_params), ) + setup_request_id(request, "request_id", False) + # Validate the universe domain. self._validate_universe_domain() @@ -3650,6 +3658,8 @@ def sample_disable_rapid_cache(): gapic_v1.routing_header.to_grpc_metadata(header_params), ) + setup_request_id(request, "request_id", False) + # Validate the universe domain. self._validate_universe_domain() @@ -3771,6 +3781,8 @@ def sample_get_rapid_cache(): gapic_v1.routing_header.to_grpc_metadata(header_params), ) + setup_request_id(request, "request_id", False) + # Validate the universe domain. self._validate_universe_domain() @@ -3888,6 +3900,8 @@ def sample_list_rapid_caches(): gapic_v1.routing_header.to_grpc_metadata(header_params), ) + setup_request_id(request, "request_id", False) + # Validate the universe domain. self._validate_universe_domain() @@ -4143,6 +4157,8 @@ def sample_update_project_intelligence_config(): ), ) + setup_request_id(request, "request_id", False) + # Validate the universe domain. self._validate_universe_domain() @@ -4387,6 +4403,8 @@ def sample_update_folder_intelligence_config(): ), ) + setup_request_id(request, "request_id", False) + # Validate the universe domain. self._validate_universe_domain() @@ -4635,6 +4653,8 @@ def sample_update_organization_intelligence_config(): ), ) + setup_request_id(request, "request_id", False) + # Validate the universe domain. self._validate_universe_domain() diff --git a/packages/google-cloud-storage-control/tests/unit/gapic/storage_control_v2/test_storage_control.py b/packages/google-cloud-storage-control/tests/unit/gapic/storage_control_v2/test_storage_control.py index 692ca1c9f7f0..b9c1bb8d4459 100644 --- a/packages/google-cloud-storage-control/tests/unit/gapic/storage_control_v2/test_storage_control.py +++ b/packages/google-cloud-storage-control/tests/unit/gapic/storage_control_v2/test_storage_control.py @@ -1948,8 +1948,15 @@ async def test_get_folder_flattened_error_async(): @pytest.mark.parametrize( "request_type", [ - storage_control.ListFoldersRequest(), - {}, + # Pure protobuf messages (non-proto-plus) require keyword arguments. + storage_control.ListFoldersRequest( + **{ + "request_id": "explicit value for autopopulate-able field", + } + ), + { + "request_id": "explicit value for autopopulate-able field", + }, ], ) def test_list_folders(request_type, transport: str = "grpc"): @@ -1974,6 +1981,7 @@ def test_list_folders(request_type, transport: str = "grpc"): assert len(call.mock_calls) == 1 _, args, _ = call.mock_calls[0] request = storage_control.ListFoldersRequest() + request.request_id = "explicit value for autopopulate-able field" assert args[0] == request # Establish that the response is the type that we expect. @@ -2017,6 +2025,9 @@ def test_list_folders_non_empty_request_with_auto_populated_field(): lexicographic_start="lexicographic_start_value", lexicographic_end="lexicographic_end_value", ) + # Ensure that the uuid4 field is set according to AIP 4235 + assert _UUID4_RE.fullmatch(args[0].request_id) + request_msg.request_id = args[0].request_id assert args[0] == request_msg @@ -2101,8 +2112,15 @@ async def test_list_folders_async_use_cached_wrapped_rpc( @pytest.mark.parametrize( "request_type", [ - storage_control.ListFoldersRequest(), - {}, + # Pure protobuf messages (non-proto-plus) require keyword arguments. + storage_control.ListFoldersRequest( + **{ + "request_id": "explicit value for autopopulate-able field", + } + ), + { + "request_id": "explicit value for autopopulate-able field", + }, ], ) async def test_list_folders_async(request_type, transport: str = "grpc_asyncio"): @@ -2129,6 +2147,7 @@ async def test_list_folders_async(request_type, transport: str = "grpc_asyncio") assert len(call.mock_calls) _, args, _ = call.mock_calls[0] request = storage_control.ListFoldersRequest() + request.request_id = "explicit value for autopopulate-able field" assert args[0] == request # Establish that the response is the type that we expect. @@ -4736,8 +4755,15 @@ async def test_list_managed_folders_async_pages(): @pytest.mark.parametrize( "request_type", [ - storage_control.UpdateManagedFolderRequest(), - {}, + # Pure protobuf messages (non-proto-plus) require keyword arguments. + storage_control.UpdateManagedFolderRequest( + **{ + "request_id": "explicit value for autopopulate-able field", + } + ), + { + "request_id": "explicit value for autopopulate-able field", + }, ], ) def test_update_managed_folder(request_type, transport: str = "grpc"): @@ -4765,6 +4791,7 @@ def test_update_managed_folder(request_type, transport: str = "grpc"): assert len(call.mock_calls) == 1 _, args, _ = call.mock_calls[0] request = storage_control.UpdateManagedFolderRequest() + request.request_id = "explicit value for autopopulate-able field" assert args[0] == request # Establish that the response is the type that we expect. @@ -4797,6 +4824,9 @@ def test_update_managed_folder_non_empty_request_with_auto_populated_field(): call.assert_called() _, args, _ = call.mock_calls[0] request_msg = storage_control.UpdateManagedFolderRequest() + # Ensure that the uuid4 field is set according to AIP 4235 + assert _UUID4_RE.fullmatch(args[0].request_id) + request_msg.request_id = args[0].request_id assert args[0] == request_msg @@ -4886,8 +4916,15 @@ async def test_update_managed_folder_async_use_cached_wrapped_rpc( @pytest.mark.parametrize( "request_type", [ - storage_control.UpdateManagedFolderRequest(), - {}, + # Pure protobuf messages (non-proto-plus) require keyword arguments. + storage_control.UpdateManagedFolderRequest( + **{ + "request_id": "explicit value for autopopulate-able field", + } + ), + { + "request_id": "explicit value for autopopulate-able field", + }, ], ) async def test_update_managed_folder_async( @@ -4919,6 +4956,7 @@ async def test_update_managed_folder_async( assert len(call.mock_calls) _, args, _ = call.mock_calls[0] request = storage_control.UpdateManagedFolderRequest() + request.request_id = "explicit value for autopopulate-able field" assert args[0] == request # Establish that the response is the type that we expect. @@ -7420,8 +7458,15 @@ async def test_list_anywhere_caches_async_pages(): @pytest.mark.parametrize( "request_type", [ - storage_control.CreateRapidCacheRequest(), - {}, + # Pure protobuf messages (non-proto-plus) require keyword arguments. + storage_control.CreateRapidCacheRequest( + **{ + "request_id": "explicit value for autopopulate-able field", + } + ), + { + "request_id": "explicit value for autopopulate-able field", + }, ], ) def test_create_rapid_cache(request_type, transport: str = "grpc"): @@ -7446,6 +7491,7 @@ def test_create_rapid_cache(request_type, transport: str = "grpc"): assert len(call.mock_calls) == 1 _, args, _ = call.mock_calls[0] request = storage_control.CreateRapidCacheRequest() + request.request_id = "explicit value for autopopulate-able field" assert args[0] == request # Establish that the response is the type that we expect. @@ -7480,6 +7526,9 @@ def test_create_rapid_cache_non_empty_request_with_auto_populated_field(): request_msg = storage_control.CreateRapidCacheRequest( parent="parent_value", ) + # Ensure that the uuid4 field is set according to AIP 4235 + assert _UUID4_RE.fullmatch(args[0].request_id) + request_msg.request_id = args[0].request_id assert args[0] == request_msg @@ -7578,8 +7627,15 @@ async def test_create_rapid_cache_async_use_cached_wrapped_rpc( @pytest.mark.parametrize( "request_type", [ - storage_control.CreateRapidCacheRequest(), - {}, + # Pure protobuf messages (non-proto-plus) require keyword arguments. + storage_control.CreateRapidCacheRequest( + **{ + "request_id": "explicit value for autopopulate-able field", + } + ), + { + "request_id": "explicit value for autopopulate-able field", + }, ], ) async def test_create_rapid_cache_async(request_type, transport: str = "grpc_asyncio"): @@ -7606,6 +7662,7 @@ async def test_create_rapid_cache_async(request_type, transport: str = "grpc_asy assert len(call.mock_calls) _, args, _ = call.mock_calls[0] request = storage_control.CreateRapidCacheRequest() + request.request_id = "explicit value for autopopulate-able field" assert args[0] == request # Establish that the response is the type that we expect. @@ -7711,8 +7768,15 @@ async def test_create_rapid_cache_flattened_error_async(): @pytest.mark.parametrize( "request_type", [ - storage_control.UpdateRapidCacheRequest(), - {}, + # Pure protobuf messages (non-proto-plus) require keyword arguments. + storage_control.UpdateRapidCacheRequest( + **{ + "request_id": "explicit value for autopopulate-able field", + } + ), + { + "request_id": "explicit value for autopopulate-able field", + }, ], ) def test_update_rapid_cache(request_type, transport: str = "grpc"): @@ -7737,6 +7801,7 @@ def test_update_rapid_cache(request_type, transport: str = "grpc"): assert len(call.mock_calls) == 1 _, args, _ = call.mock_calls[0] request = storage_control.UpdateRapidCacheRequest() + request.request_id = "explicit value for autopopulate-able field" assert args[0] == request # Establish that the response is the type that we expect. @@ -7767,6 +7832,9 @@ def test_update_rapid_cache_non_empty_request_with_auto_populated_field(): call.assert_called() _, args, _ = call.mock_calls[0] request_msg = storage_control.UpdateRapidCacheRequest() + # Ensure that the uuid4 field is set according to AIP 4235 + assert _UUID4_RE.fullmatch(args[0].request_id) + request_msg.request_id = args[0].request_id assert args[0] == request_msg @@ -7865,8 +7933,15 @@ async def test_update_rapid_cache_async_use_cached_wrapped_rpc( @pytest.mark.parametrize( "request_type", [ - storage_control.UpdateRapidCacheRequest(), - {}, + # Pure protobuf messages (non-proto-plus) require keyword arguments. + storage_control.UpdateRapidCacheRequest( + **{ + "request_id": "explicit value for autopopulate-able field", + } + ), + { + "request_id": "explicit value for autopopulate-able field", + }, ], ) async def test_update_rapid_cache_async(request_type, transport: str = "grpc_asyncio"): @@ -7893,6 +7968,7 @@ async def test_update_rapid_cache_async(request_type, transport: str = "grpc_asy assert len(call.mock_calls) _, args, _ = call.mock_calls[0] request = storage_control.UpdateRapidCacheRequest() + request.request_id = "explicit value for autopopulate-able field" assert args[0] == request # Establish that the response is the type that we expect. @@ -7998,8 +8074,15 @@ async def test_update_rapid_cache_flattened_error_async(): @pytest.mark.parametrize( "request_type", [ - storage_control.DisableRapidCacheRequest(), - {}, + # Pure protobuf messages (non-proto-plus) require keyword arguments. + storage_control.DisableRapidCacheRequest( + **{ + "request_id": "explicit value for autopopulate-able field", + } + ), + { + "request_id": "explicit value for autopopulate-able field", + }, ], ) def test_disable_rapid_cache(request_type, transport: str = "grpc"): @@ -8024,6 +8107,7 @@ def test_disable_rapid_cache(request_type, transport: str = "grpc"): assert len(call.mock_calls) == 1 _, args, _ = call.mock_calls[0] request = storage_control.DisableRapidCacheRequest() + request.request_id = "explicit value for autopopulate-able field" assert args[0] == request # Establish that the response is the type that we expect. @@ -8058,6 +8142,9 @@ def test_disable_rapid_cache_non_empty_request_with_auto_populated_field(): request_msg = storage_control.DisableRapidCacheRequest( name="name_value", ) + # Ensure that the uuid4 field is set according to AIP 4235 + assert _UUID4_RE.fullmatch(args[0].request_id) + request_msg.request_id = args[0].request_id assert args[0] == request_msg @@ -8156,8 +8243,15 @@ async def test_disable_rapid_cache_async_use_cached_wrapped_rpc( @pytest.mark.parametrize( "request_type", [ - storage_control.DisableRapidCacheRequest(), - {}, + # Pure protobuf messages (non-proto-plus) require keyword arguments. + storage_control.DisableRapidCacheRequest( + **{ + "request_id": "explicit value for autopopulate-able field", + } + ), + { + "request_id": "explicit value for autopopulate-able field", + }, ], ) async def test_disable_rapid_cache_async(request_type, transport: str = "grpc_asyncio"): @@ -8184,6 +8278,7 @@ async def test_disable_rapid_cache_async(request_type, transport: str = "grpc_as assert len(call.mock_calls) _, args, _ = call.mock_calls[0] request = storage_control.DisableRapidCacheRequest() + request.request_id = "explicit value for autopopulate-able field" assert args[0] == request # Establish that the response is the type that we expect. @@ -8279,8 +8374,15 @@ async def test_disable_rapid_cache_flattened_error_async(): @pytest.mark.parametrize( "request_type", [ - storage_control.GetRapidCacheRequest(), - {}, + # Pure protobuf messages (non-proto-plus) require keyword arguments. + storage_control.GetRapidCacheRequest( + **{ + "request_id": "explicit value for autopopulate-able field", + } + ), + { + "request_id": "explicit value for autopopulate-able field", + }, ], ) def test_get_rapid_cache(request_type, transport: str = "grpc"): @@ -8310,6 +8412,7 @@ def test_get_rapid_cache(request_type, transport: str = "grpc"): assert len(call.mock_calls) == 1 _, args, _ = call.mock_calls[0] request = storage_control.GetRapidCacheRequest() + request.request_id = "explicit value for autopopulate-able field" assert args[0] == request # Establish that the response is the type that we expect. @@ -8348,6 +8451,9 @@ def test_get_rapid_cache_non_empty_request_with_auto_populated_field(): request_msg = storage_control.GetRapidCacheRequest( name="name_value", ) + # Ensure that the uuid4 field is set according to AIP 4235 + assert _UUID4_RE.fullmatch(args[0].request_id) + request_msg.request_id = args[0].request_id assert args[0] == request_msg @@ -8432,8 +8538,15 @@ async def test_get_rapid_cache_async_use_cached_wrapped_rpc( @pytest.mark.parametrize( "request_type", [ - storage_control.GetRapidCacheRequest(), - {}, + # Pure protobuf messages (non-proto-plus) require keyword arguments. + storage_control.GetRapidCacheRequest( + **{ + "request_id": "explicit value for autopopulate-able field", + } + ), + { + "request_id": "explicit value for autopopulate-able field", + }, ], ) async def test_get_rapid_cache_async(request_type, transport: str = "grpc_asyncio"): @@ -8465,6 +8578,7 @@ async def test_get_rapid_cache_async(request_type, transport: str = "grpc_asynci assert len(call.mock_calls) _, args, _ = call.mock_calls[0] request = storage_control.GetRapidCacheRequest() + request.request_id = "explicit value for autopopulate-able field" assert args[0] == request # Establish that the response is the type that we expect. @@ -8562,8 +8676,15 @@ async def test_get_rapid_cache_flattened_error_async(): @pytest.mark.parametrize( "request_type", [ - storage_control.ListRapidCachesRequest(), - {}, + # Pure protobuf messages (non-proto-plus) require keyword arguments. + storage_control.ListRapidCachesRequest( + **{ + "request_id": "explicit value for autopopulate-able field", + } + ), + { + "request_id": "explicit value for autopopulate-able field", + }, ], ) def test_list_rapid_caches(request_type, transport: str = "grpc"): @@ -8590,6 +8711,7 @@ def test_list_rapid_caches(request_type, transport: str = "grpc"): assert len(call.mock_calls) == 1 _, args, _ = call.mock_calls[0] request = storage_control.ListRapidCachesRequest() + request.request_id = "explicit value for autopopulate-able field" assert args[0] == request # Establish that the response is the type that we expect. @@ -8627,6 +8749,9 @@ def test_list_rapid_caches_non_empty_request_with_auto_populated_field(): parent="parent_value", page_token="page_token_value", ) + # Ensure that the uuid4 field is set according to AIP 4235 + assert _UUID4_RE.fullmatch(args[0].request_id) + request_msg.request_id = args[0].request_id assert args[0] == request_msg @@ -8713,8 +8838,15 @@ async def test_list_rapid_caches_async_use_cached_wrapped_rpc( @pytest.mark.parametrize( "request_type", [ - storage_control.ListRapidCachesRequest(), - {}, + # Pure protobuf messages (non-proto-plus) require keyword arguments. + storage_control.ListRapidCachesRequest( + **{ + "request_id": "explicit value for autopopulate-able field", + } + ), + { + "request_id": "explicit value for autopopulate-able field", + }, ], ) async def test_list_rapid_caches_async(request_type, transport: str = "grpc_asyncio"): @@ -8743,6 +8875,7 @@ async def test_list_rapid_caches_async(request_type, transport: str = "grpc_asyn assert len(call.mock_calls) _, args, _ = call.mock_calls[0] request = storage_control.ListRapidCachesRequest() + request.request_id = "explicit value for autopopulate-able field" assert args[0] == request # Establish that the response is the type that we expect. @@ -9394,8 +9527,15 @@ async def test_get_project_intelligence_config_flattened_error_async(): @pytest.mark.parametrize( "request_type", [ - storage_control.UpdateProjectIntelligenceConfigRequest(), - {}, + # Pure protobuf messages (non-proto-plus) require keyword arguments. + storage_control.UpdateProjectIntelligenceConfigRequest( + **{ + "request_id": "explicit value for autopopulate-able field", + } + ), + { + "request_id": "explicit value for autopopulate-able field", + }, ], ) def test_update_project_intelligence_config(request_type, transport: str = "grpc"): @@ -9423,6 +9563,7 @@ def test_update_project_intelligence_config(request_type, transport: str = "grpc assert len(call.mock_calls) == 1 _, args, _ = call.mock_calls[0] request = storage_control.UpdateProjectIntelligenceConfigRequest() + request.request_id = "explicit value for autopopulate-able field" assert args[0] == request # Establish that the response is the type that we expect. @@ -9458,6 +9599,9 @@ def test_update_project_intelligence_config_non_empty_request_with_auto_populate call.assert_called() _, args, _ = call.mock_calls[0] request_msg = storage_control.UpdateProjectIntelligenceConfigRequest() + # Ensure that the uuid4 field is set according to AIP 4235 + assert _UUID4_RE.fullmatch(args[0].request_id) + request_msg.request_id = args[0].request_id assert args[0] == request_msg @@ -9547,8 +9691,15 @@ async def test_update_project_intelligence_config_async_use_cached_wrapped_rpc( @pytest.mark.parametrize( "request_type", [ - storage_control.UpdateProjectIntelligenceConfigRequest(), - {}, + # Pure protobuf messages (non-proto-plus) require keyword arguments. + storage_control.UpdateProjectIntelligenceConfigRequest( + **{ + "request_id": "explicit value for autopopulate-able field", + } + ), + { + "request_id": "explicit value for autopopulate-able field", + }, ], ) async def test_update_project_intelligence_config_async( @@ -9580,6 +9731,7 @@ async def test_update_project_intelligence_config_async( assert len(call.mock_calls) _, args, _ = call.mock_calls[0] request = storage_control.UpdateProjectIntelligenceConfigRequest() + request.request_id = "explicit value for autopopulate-able field" assert args[0] == request # Establish that the response is the type that we expect. @@ -10110,8 +10262,15 @@ async def test_get_folder_intelligence_config_flattened_error_async(): @pytest.mark.parametrize( "request_type", [ - storage_control.UpdateFolderIntelligenceConfigRequest(), - {}, + # Pure protobuf messages (non-proto-plus) require keyword arguments. + storage_control.UpdateFolderIntelligenceConfigRequest( + **{ + "request_id": "explicit value for autopopulate-able field", + } + ), + { + "request_id": "explicit value for autopopulate-able field", + }, ], ) def test_update_folder_intelligence_config(request_type, transport: str = "grpc"): @@ -10139,6 +10298,7 @@ def test_update_folder_intelligence_config(request_type, transport: str = "grpc" assert len(call.mock_calls) == 1 _, args, _ = call.mock_calls[0] request = storage_control.UpdateFolderIntelligenceConfigRequest() + request.request_id = "explicit value for autopopulate-able field" assert args[0] == request # Establish that the response is the type that we expect. @@ -10174,6 +10334,9 @@ def test_update_folder_intelligence_config_non_empty_request_with_auto_populated call.assert_called() _, args, _ = call.mock_calls[0] request_msg = storage_control.UpdateFolderIntelligenceConfigRequest() + # Ensure that the uuid4 field is set according to AIP 4235 + assert _UUID4_RE.fullmatch(args[0].request_id) + request_msg.request_id = args[0].request_id assert args[0] == request_msg @@ -10263,8 +10426,15 @@ async def test_update_folder_intelligence_config_async_use_cached_wrapped_rpc( @pytest.mark.parametrize( "request_type", [ - storage_control.UpdateFolderIntelligenceConfigRequest(), - {}, + # Pure protobuf messages (non-proto-plus) require keyword arguments. + storage_control.UpdateFolderIntelligenceConfigRequest( + **{ + "request_id": "explicit value for autopopulate-able field", + } + ), + { + "request_id": "explicit value for autopopulate-able field", + }, ], ) async def test_update_folder_intelligence_config_async( @@ -10296,6 +10466,7 @@ async def test_update_folder_intelligence_config_async( assert len(call.mock_calls) _, args, _ = call.mock_calls[0] request = storage_control.UpdateFolderIntelligenceConfigRequest() + request.request_id = "explicit value for autopopulate-able field" assert args[0] == request # Establish that the response is the type that we expect. @@ -10826,8 +10997,15 @@ async def test_get_organization_intelligence_config_flattened_error_async(): @pytest.mark.parametrize( "request_type", [ - storage_control.UpdateOrganizationIntelligenceConfigRequest(), - {}, + # Pure protobuf messages (non-proto-plus) require keyword arguments. + storage_control.UpdateOrganizationIntelligenceConfigRequest( + **{ + "request_id": "explicit value for autopopulate-able field", + } + ), + { + "request_id": "explicit value for autopopulate-able field", + }, ], ) def test_update_organization_intelligence_config(request_type, transport: str = "grpc"): @@ -10855,6 +11033,7 @@ def test_update_organization_intelligence_config(request_type, transport: str = assert len(call.mock_calls) == 1 _, args, _ = call.mock_calls[0] request = storage_control.UpdateOrganizationIntelligenceConfigRequest() + request.request_id = "explicit value for autopopulate-able field" assert args[0] == request # Establish that the response is the type that we expect. @@ -10890,6 +11069,9 @@ def test_update_organization_intelligence_config_non_empty_request_with_auto_pop call.assert_called() _, args, _ = call.mock_calls[0] request_msg = storage_control.UpdateOrganizationIntelligenceConfigRequest() + # Ensure that the uuid4 field is set according to AIP 4235 + assert _UUID4_RE.fullmatch(args[0].request_id) + request_msg.request_id = args[0].request_id assert args[0] == request_msg @@ -10979,8 +11161,15 @@ async def test_update_organization_intelligence_config_async_use_cached_wrapped_ @pytest.mark.parametrize( "request_type", [ - storage_control.UpdateOrganizationIntelligenceConfigRequest(), - {}, + # Pure protobuf messages (non-proto-plus) require keyword arguments. + storage_control.UpdateOrganizationIntelligenceConfigRequest( + **{ + "request_id": "explicit value for autopopulate-able field", + } + ), + { + "request_id": "explicit value for autopopulate-able field", + }, ], ) async def test_update_organization_intelligence_config_async( @@ -11012,6 +11201,7 @@ async def test_update_organization_intelligence_config_async( assert len(call.mock_calls) _, args, _ = call.mock_calls[0] request = storage_control.UpdateOrganizationIntelligenceConfigRequest() + request.request_id = "explicit value for autopopulate-able field" assert args[0] == request # Establish that the response is the type that we expect. @@ -15457,6 +15647,15 @@ def test_list_folders_rest_required_fields( response = client.list_folders(request) expected_params = [("$alt", "json;enum-encoding=int")] + # Ensure that the uuid4 field is set according to AIP 4235 + for i, (key, value) in enumerate(req.call_args.kwargs["params"]): + if key == "requestId": + assert _UUID4_RE.match(value) + break + + # Include requestId within expected_params with value mock.ANY + expected_params = [p for p in expected_params if p[0] != "requestId"] + expected_params.append(("requestId", mock.ANY)) actual_params = req.call_args.kwargs["params"] assert sorted(expected_params) == sorted(actual_params) @@ -16602,6 +16801,15 @@ def test_update_project_intelligence_config_rest_required_fields( response = client.update_project_intelligence_config(request) expected_params = [("$alt", "json;enum-encoding=int")] + # Ensure that the uuid4 field is set according to AIP 4235 + for i, (key, value) in enumerate(req.call_args.kwargs["params"]): + if key == "requestId": + assert _UUID4_RE.match(value) + break + + # Include requestId within expected_params with value mock.ANY + expected_params = [p for p in expected_params if p[0] != "requestId"] + expected_params.append(("requestId", mock.ANY)) actual_params = req.call_args.kwargs["params"] assert sorted(expected_params) == sorted(actual_params) @@ -16964,6 +17172,15 @@ def test_update_folder_intelligence_config_rest_required_fields( response = client.update_folder_intelligence_config(request) expected_params = [("$alt", "json;enum-encoding=int")] + # Ensure that the uuid4 field is set according to AIP 4235 + for i, (key, value) in enumerate(req.call_args.kwargs["params"]): + if key == "requestId": + assert _UUID4_RE.match(value) + break + + # Include requestId within expected_params with value mock.ANY + expected_params = [p for p in expected_params if p[0] != "requestId"] + expected_params.append(("requestId", mock.ANY)) actual_params = req.call_args.kwargs["params"] assert sorted(expected_params) == sorted(actual_params) @@ -17328,6 +17545,15 @@ def test_update_organization_intelligence_config_rest_required_fields( response = client.update_organization_intelligence_config(request) expected_params = [("$alt", "json;enum-encoding=int")] + # Ensure that the uuid4 field is set according to AIP 4235 + for i, (key, value) in enumerate(req.call_args.kwargs["params"]): + if key == "requestId": + assert _UUID4_RE.match(value) + break + + # Include requestId within expected_params with value mock.ANY + expected_params = [p for p in expected_params if p[0] != "requestId"] + expected_params.append(("requestId", mock.ANY)) actual_params = req.call_args.kwargs["params"] assert sorted(expected_params) == sorted(actual_params) @@ -19205,6 +19431,9 @@ def test_list_folders_empty_call_grpc(): call.assert_called() _, args, _ = call.mock_calls[0] request_msg = storage_control.ListFoldersRequest() + # Ensure that the uuid4 field is set according to AIP 4235 + assert _UUID4_RE.fullmatch(args[0].request_id) + request_msg.request_id = args[0].request_id assert args[0] == request_msg @@ -19400,6 +19629,9 @@ def test_update_managed_folder_empty_call_grpc(): call.assert_called() _, args, _ = call.mock_calls[0] request_msg = storage_control.UpdateManagedFolderRequest() + # Ensure that the uuid4 field is set according to AIP 4235 + assert _UUID4_RE.fullmatch(args[0].request_id) + request_msg.request_id = args[0].request_id assert args[0] == request_msg @@ -19597,6 +19829,9 @@ def test_create_rapid_cache_empty_call_grpc(): call.assert_called() _, args, _ = call.mock_calls[0] request_msg = storage_control.CreateRapidCacheRequest() + # Ensure that the uuid4 field is set according to AIP 4235 + assert _UUID4_RE.fullmatch(args[0].request_id) + request_msg.request_id = args[0].request_id assert args[0] == request_msg @@ -19619,6 +19854,9 @@ def test_update_rapid_cache_empty_call_grpc(): call.assert_called() _, args, _ = call.mock_calls[0] request_msg = storage_control.UpdateRapidCacheRequest() + # Ensure that the uuid4 field is set according to AIP 4235 + assert _UUID4_RE.fullmatch(args[0].request_id) + request_msg.request_id = args[0].request_id assert args[0] == request_msg @@ -19641,6 +19879,9 @@ def test_disable_rapid_cache_empty_call_grpc(): call.assert_called() _, args, _ = call.mock_calls[0] request_msg = storage_control.DisableRapidCacheRequest() + # Ensure that the uuid4 field is set according to AIP 4235 + assert _UUID4_RE.fullmatch(args[0].request_id) + request_msg.request_id = args[0].request_id assert args[0] == request_msg @@ -19661,6 +19902,9 @@ def test_get_rapid_cache_empty_call_grpc(): call.assert_called() _, args, _ = call.mock_calls[0] request_msg = storage_control.GetRapidCacheRequest() + # Ensure that the uuid4 field is set according to AIP 4235 + assert _UUID4_RE.fullmatch(args[0].request_id) + request_msg.request_id = args[0].request_id assert args[0] == request_msg @@ -19683,6 +19927,9 @@ def test_list_rapid_caches_empty_call_grpc(): call.assert_called() _, args, _ = call.mock_calls[0] request_msg = storage_control.ListRapidCachesRequest() + # Ensure that the uuid4 field is set according to AIP 4235 + assert _UUID4_RE.fullmatch(args[0].request_id) + request_msg.request_id = args[0].request_id assert args[0] == request_msg @@ -19727,6 +19974,9 @@ def test_update_project_intelligence_config_empty_call_grpc(): call.assert_called() _, args, _ = call.mock_calls[0] request_msg = storage_control.UpdateProjectIntelligenceConfigRequest() + # Ensure that the uuid4 field is set according to AIP 4235 + assert _UUID4_RE.fullmatch(args[0].request_id) + request_msg.request_id = args[0].request_id assert args[0] == request_msg @@ -19771,6 +20021,9 @@ def test_update_folder_intelligence_config_empty_call_grpc(): call.assert_called() _, args, _ = call.mock_calls[0] request_msg = storage_control.UpdateFolderIntelligenceConfigRequest() + # Ensure that the uuid4 field is set according to AIP 4235 + assert _UUID4_RE.fullmatch(args[0].request_id) + request_msg.request_id = args[0].request_id assert args[0] == request_msg @@ -19815,6 +20068,9 @@ def test_update_organization_intelligence_config_empty_call_grpc(): call.assert_called() _, args, _ = call.mock_calls[0] request_msg = storage_control.UpdateOrganizationIntelligenceConfigRequest() + # Ensure that the uuid4 field is set according to AIP 4235 + assert _UUID4_RE.fullmatch(args[0].request_id) + request_msg.request_id = args[0].request_id assert args[0] == request_msg @@ -20111,6 +20367,9 @@ def test_list_folders_routing_parameters_request_1_grpc(): call.assert_called() _, args, kw = call.mock_calls[0] request_msg = storage_control.ListFoldersRequest(**{"parent": "sample1"}) + # Ensure that the uuid4 field is set according to AIP 4235 + assert _UUID4_RE.fullmatch(args[0].request_id) + request_msg.request_id = args[0].request_id assert args[0] == request_msg expected_headers = {"bucket": "sample1"} @@ -20358,6 +20617,9 @@ def test_update_managed_folder_routing_parameters_request_1_grpc(): request_msg = storage_control.UpdateManagedFolderRequest( **{"managed_folder": {"name": "projects/sample1/buckets/sample2/sample3"}} ) + # Ensure that the uuid4 field is set according to AIP 4235 + assert _UUID4_RE.fullmatch(args[0].request_id) + request_msg.request_id = args[0].request_id assert args[0] == request_msg expected_headers = {"bucket": "projects/sample1/buckets/sample2"} @@ -20603,6 +20865,9 @@ def test_create_rapid_cache_routing_parameters_request_1_grpc(): call.assert_called() _, args, kw = call.mock_calls[0] request_msg = storage_control.CreateRapidCacheRequest(**{"parent": "sample1"}) + # Ensure that the uuid4 field is set according to AIP 4235 + assert _UUID4_RE.fullmatch(args[0].request_id) + request_msg.request_id = args[0].request_id assert args[0] == request_msg expected_headers = {"bucket": "sample1"} @@ -20634,6 +20899,9 @@ def test_update_rapid_cache_routing_parameters_request_1_grpc(): request_msg = storage_control.UpdateRapidCacheRequest( **{"rapid_cache": {"name": "projects/sample1/buckets/sample2/sample3"}} ) + # Ensure that the uuid4 field is set according to AIP 4235 + assert _UUID4_RE.fullmatch(args[0].request_id) + request_msg.request_id = args[0].request_id assert args[0] == request_msg expected_headers = {"bucket": "projects/sample1/buckets/sample2"} @@ -20663,6 +20931,9 @@ def test_disable_rapid_cache_routing_parameters_request_1_grpc(): request_msg = storage_control.DisableRapidCacheRequest( **{"name": "projects/sample1/buckets/sample2/sample3"} ) + # Ensure that the uuid4 field is set according to AIP 4235 + assert _UUID4_RE.fullmatch(args[0].request_id) + request_msg.request_id = args[0].request_id assert args[0] == request_msg expected_headers = {"bucket": "projects/sample1/buckets/sample2"} @@ -20690,6 +20961,9 @@ def test_get_rapid_cache_routing_parameters_request_1_grpc(): request_msg = storage_control.GetRapidCacheRequest( **{"name": "projects/sample1/buckets/sample2/sample3"} ) + # Ensure that the uuid4 field is set according to AIP 4235 + assert _UUID4_RE.fullmatch(args[0].request_id) + request_msg.request_id = args[0].request_id assert args[0] == request_msg expected_headers = {"bucket": "projects/sample1/buckets/sample2"} @@ -20715,6 +20989,9 @@ def test_list_rapid_caches_routing_parameters_request_1_grpc(): call.assert_called() _, args, kw = call.mock_calls[0] request_msg = storage_control.ListRapidCachesRequest(**{"parent": "sample1"}) + # Ensure that the uuid4 field is set according to AIP 4235 + assert _UUID4_RE.fullmatch(args[0].request_id) + request_msg.request_id = args[0].request_id assert args[0] == request_msg expected_headers = {"bucket": "sample1"} @@ -21061,6 +21338,9 @@ async def test_list_folders_empty_call_grpc_asyncio(): call.assert_called() _, args, _ = call.mock_calls[0] request_msg = storage_control.ListFoldersRequest() + # Ensure that the uuid4 field is set according to AIP 4235 + assert _UUID4_RE.fullmatch(args[0].request_id) + request_msg.request_id = args[0].request_id assert args[0] == request_msg @@ -21301,6 +21581,9 @@ async def test_update_managed_folder_empty_call_grpc_asyncio(): call.assert_called() _, args, _ = call.mock_calls[0] request_msg = storage_control.UpdateManagedFolderRequest() + # Ensure that the uuid4 field is set according to AIP 4235 + assert _UUID4_RE.fullmatch(args[0].request_id) + request_msg.request_id = args[0].request_id assert args[0] == request_msg @@ -21560,6 +21843,9 @@ async def test_create_rapid_cache_empty_call_grpc_asyncio(): call.assert_called() _, args, _ = call.mock_calls[0] request_msg = storage_control.CreateRapidCacheRequest() + # Ensure that the uuid4 field is set according to AIP 4235 + assert _UUID4_RE.fullmatch(args[0].request_id) + request_msg.request_id = args[0].request_id assert args[0] == request_msg @@ -21586,6 +21872,9 @@ async def test_update_rapid_cache_empty_call_grpc_asyncio(): call.assert_called() _, args, _ = call.mock_calls[0] request_msg = storage_control.UpdateRapidCacheRequest() + # Ensure that the uuid4 field is set according to AIP 4235 + assert _UUID4_RE.fullmatch(args[0].request_id) + request_msg.request_id = args[0].request_id assert args[0] == request_msg @@ -21612,6 +21901,9 @@ async def test_disable_rapid_cache_empty_call_grpc_asyncio(): call.assert_called() _, args, _ = call.mock_calls[0] request_msg = storage_control.DisableRapidCacheRequest() + # Ensure that the uuid4 field is set according to AIP 4235 + assert _UUID4_RE.fullmatch(args[0].request_id) + request_msg.request_id = args[0].request_id assert args[0] == request_msg @@ -21643,6 +21935,9 @@ async def test_get_rapid_cache_empty_call_grpc_asyncio(): call.assert_called() _, args, _ = call.mock_calls[0] request_msg = storage_control.GetRapidCacheRequest() + # Ensure that the uuid4 field is set according to AIP 4235 + assert _UUID4_RE.fullmatch(args[0].request_id) + request_msg.request_id = args[0].request_id assert args[0] == request_msg @@ -21671,6 +21966,9 @@ async def test_list_rapid_caches_empty_call_grpc_asyncio(): call.assert_called() _, args, _ = call.mock_calls[0] request_msg = storage_control.ListRapidCachesRequest() + # Ensure that the uuid4 field is set according to AIP 4235 + assert _UUID4_RE.fullmatch(args[0].request_id) + request_msg.request_id = args[0].request_id assert args[0] == request_msg @@ -21729,6 +22027,9 @@ async def test_update_project_intelligence_config_empty_call_grpc_asyncio(): call.assert_called() _, args, _ = call.mock_calls[0] request_msg = storage_control.UpdateProjectIntelligenceConfigRequest() + # Ensure that the uuid4 field is set according to AIP 4235 + assert _UUID4_RE.fullmatch(args[0].request_id) + request_msg.request_id = args[0].request_id assert args[0] == request_msg @@ -21787,6 +22088,9 @@ async def test_update_folder_intelligence_config_empty_call_grpc_asyncio(): call.assert_called() _, args, _ = call.mock_calls[0] request_msg = storage_control.UpdateFolderIntelligenceConfigRequest() + # Ensure that the uuid4 field is set according to AIP 4235 + assert _UUID4_RE.fullmatch(args[0].request_id) + request_msg.request_id = args[0].request_id assert args[0] == request_msg @@ -21845,6 +22149,9 @@ async def test_update_organization_intelligence_config_empty_call_grpc_asyncio() call.assert_called() _, args, _ = call.mock_calls[0] request_msg = storage_control.UpdateOrganizationIntelligenceConfigRequest() + # Ensure that the uuid4 field is set according to AIP 4235 + assert _UUID4_RE.fullmatch(args[0].request_id) + request_msg.request_id = args[0].request_id assert args[0] == request_msg @@ -22229,6 +22536,9 @@ async def test_list_folders_routing_parameters_request_1_grpc_asyncio(): call.assert_called() _, args, kw = call.mock_calls[0] request_msg = storage_control.ListFoldersRequest(**{"parent": "sample1"}) + # Ensure that the uuid4 field is set according to AIP 4235 + assert _UUID4_RE.fullmatch(args[0].request_id) + request_msg.request_id = args[0].request_id assert args[0] == request_msg expected_headers = {"bucket": "sample1"} @@ -22521,6 +22831,9 @@ async def test_update_managed_folder_routing_parameters_request_1_grpc_asyncio() request_msg = storage_control.UpdateManagedFolderRequest( **{"managed_folder": {"name": "projects/sample1/buckets/sample2/sample3"}} ) + # Ensure that the uuid4 field is set according to AIP 4235 + assert _UUID4_RE.fullmatch(args[0].request_id) + request_msg.request_id = args[0].request_id assert args[0] == request_msg expected_headers = {"bucket": "projects/sample1/buckets/sample2"} @@ -22828,6 +23141,9 @@ async def test_create_rapid_cache_routing_parameters_request_1_grpc_asyncio(): call.assert_called() _, args, kw = call.mock_calls[0] request_msg = storage_control.CreateRapidCacheRequest(**{"parent": "sample1"}) + # Ensure that the uuid4 field is set according to AIP 4235 + assert _UUID4_RE.fullmatch(args[0].request_id) + request_msg.request_id = args[0].request_id assert args[0] == request_msg expected_headers = {"bucket": "sample1"} @@ -22863,6 +23179,9 @@ async def test_update_rapid_cache_routing_parameters_request_1_grpc_asyncio(): request_msg = storage_control.UpdateRapidCacheRequest( **{"rapid_cache": {"name": "projects/sample1/buckets/sample2/sample3"}} ) + # Ensure that the uuid4 field is set according to AIP 4235 + assert _UUID4_RE.fullmatch(args[0].request_id) + request_msg.request_id = args[0].request_id assert args[0] == request_msg expected_headers = {"bucket": "projects/sample1/buckets/sample2"} @@ -22896,6 +23215,9 @@ async def test_disable_rapid_cache_routing_parameters_request_1_grpc_asyncio(): request_msg = storage_control.DisableRapidCacheRequest( **{"name": "projects/sample1/buckets/sample2/sample3"} ) + # Ensure that the uuid4 field is set according to AIP 4235 + assert _UUID4_RE.fullmatch(args[0].request_id) + request_msg.request_id = args[0].request_id assert args[0] == request_msg expected_headers = {"bucket": "projects/sample1/buckets/sample2"} @@ -22934,6 +23256,9 @@ async def test_get_rapid_cache_routing_parameters_request_1_grpc_asyncio(): request_msg = storage_control.GetRapidCacheRequest( **{"name": "projects/sample1/buckets/sample2/sample3"} ) + # Ensure that the uuid4 field is set according to AIP 4235 + assert _UUID4_RE.fullmatch(args[0].request_id) + request_msg.request_id = args[0].request_id assert args[0] == request_msg expected_headers = {"bucket": "projects/sample1/buckets/sample2"} @@ -22965,6 +23290,9 @@ async def test_list_rapid_caches_routing_parameters_request_1_grpc_asyncio(): call.assert_called() _, args, kw = call.mock_calls[0] request_msg = storage_control.ListRapidCachesRequest(**{"parent": "sample1"}) + # Ensure that the uuid4 field is set according to AIP 4235 + assert _UUID4_RE.fullmatch(args[0].request_id) + request_msg.request_id = args[0].request_id assert args[0] == request_msg expected_headers = {"bucket": "sample1"} @@ -26551,6 +26879,9 @@ def test_list_folders_empty_call_rest(): call.assert_called() _, args, _ = call.mock_calls[0] request_msg = storage_control.ListFoldersRequest() + # Ensure that the uuid4 field is set according to AIP 4235 + assert _UUID4_RE.fullmatch(args[0].request_id) + request_msg.request_id = args[0].request_id assert args[0] == request_msg @@ -26738,6 +27069,9 @@ def test_update_managed_folder_empty_call_rest(): call.assert_called() _, args, _ = call.mock_calls[0] request_msg = storage_control.UpdateManagedFolderRequest() + # Ensure that the uuid4 field is set according to AIP 4235 + assert _UUID4_RE.fullmatch(args[0].request_id) + request_msg.request_id = args[0].request_id assert args[0] == request_msg @@ -26927,6 +27261,9 @@ def test_create_rapid_cache_empty_call_rest(): call.assert_called() _, args, _ = call.mock_calls[0] request_msg = storage_control.CreateRapidCacheRequest() + # Ensure that the uuid4 field is set according to AIP 4235 + assert _UUID4_RE.fullmatch(args[0].request_id) + request_msg.request_id = args[0].request_id assert args[0] == request_msg @@ -26948,6 +27285,9 @@ def test_update_rapid_cache_empty_call_rest(): call.assert_called() _, args, _ = call.mock_calls[0] request_msg = storage_control.UpdateRapidCacheRequest() + # Ensure that the uuid4 field is set according to AIP 4235 + assert _UUID4_RE.fullmatch(args[0].request_id) + request_msg.request_id = args[0].request_id assert args[0] == request_msg @@ -26969,6 +27309,9 @@ def test_disable_rapid_cache_empty_call_rest(): call.assert_called() _, args, _ = call.mock_calls[0] request_msg = storage_control.DisableRapidCacheRequest() + # Ensure that the uuid4 field is set according to AIP 4235 + assert _UUID4_RE.fullmatch(args[0].request_id) + request_msg.request_id = args[0].request_id assert args[0] == request_msg @@ -26988,6 +27331,9 @@ def test_get_rapid_cache_empty_call_rest(): call.assert_called() _, args, _ = call.mock_calls[0] request_msg = storage_control.GetRapidCacheRequest() + # Ensure that the uuid4 field is set according to AIP 4235 + assert _UUID4_RE.fullmatch(args[0].request_id) + request_msg.request_id = args[0].request_id assert args[0] == request_msg @@ -27009,6 +27355,9 @@ def test_list_rapid_caches_empty_call_rest(): call.assert_called() _, args, _ = call.mock_calls[0] request_msg = storage_control.ListRapidCachesRequest() + # Ensure that the uuid4 field is set according to AIP 4235 + assert _UUID4_RE.fullmatch(args[0].request_id) + request_msg.request_id = args[0].request_id assert args[0] == request_msg @@ -27051,6 +27400,9 @@ def test_update_project_intelligence_config_empty_call_rest(): call.assert_called() _, args, _ = call.mock_calls[0] request_msg = storage_control.UpdateProjectIntelligenceConfigRequest() + # Ensure that the uuid4 field is set according to AIP 4235 + assert _UUID4_RE.fullmatch(args[0].request_id) + request_msg.request_id = args[0].request_id assert args[0] == request_msg @@ -27093,6 +27445,9 @@ def test_update_folder_intelligence_config_empty_call_rest(): call.assert_called() _, args, _ = call.mock_calls[0] request_msg = storage_control.UpdateFolderIntelligenceConfigRequest() + # Ensure that the uuid4 field is set according to AIP 4235 + assert _UUID4_RE.fullmatch(args[0].request_id) + request_msg.request_id = args[0].request_id assert args[0] == request_msg @@ -27135,6 +27490,9 @@ def test_update_organization_intelligence_config_empty_call_rest(): call.assert_called() _, args, _ = call.mock_calls[0] request_msg = storage_control.UpdateOrganizationIntelligenceConfigRequest() + # Ensure that the uuid4 field is set according to AIP 4235 + assert _UUID4_RE.fullmatch(args[0].request_id) + request_msg.request_id = args[0].request_id assert args[0] == request_msg @@ -27418,6 +27776,9 @@ def test_list_folders_routing_parameters_request_1_rest(): call.assert_called() _, args, kw = call.mock_calls[0] request_msg = storage_control.ListFoldersRequest(**{"parent": "sample1"}) + # Ensure that the uuid4 field is set according to AIP 4235 + assert _UUID4_RE.fullmatch(args[0].request_id) + request_msg.request_id = args[0].request_id assert args[0] == request_msg expected_headers = {"bucket": "sample1"} @@ -27657,6 +28018,9 @@ def test_update_managed_folder_routing_parameters_request_1_rest(): request_msg = storage_control.UpdateManagedFolderRequest( **{"managed_folder": {"name": "projects/sample1/buckets/sample2/sample3"}} ) + # Ensure that the uuid4 field is set according to AIP 4235 + assert _UUID4_RE.fullmatch(args[0].request_id) + request_msg.request_id = args[0].request_id assert args[0] == request_msg expected_headers = {"bucket": "projects/sample1/buckets/sample2"} @@ -27894,6 +28258,9 @@ def test_create_rapid_cache_routing_parameters_request_1_rest(): call.assert_called() _, args, kw = call.mock_calls[0] request_msg = storage_control.CreateRapidCacheRequest(**{"parent": "sample1"}) + # Ensure that the uuid4 field is set according to AIP 4235 + assert _UUID4_RE.fullmatch(args[0].request_id) + request_msg.request_id = args[0].request_id assert args[0] == request_msg expected_headers = {"bucket": "sample1"} @@ -27924,6 +28291,9 @@ def test_update_rapid_cache_routing_parameters_request_1_rest(): request_msg = storage_control.UpdateRapidCacheRequest( **{"rapid_cache": {"name": "projects/sample1/buckets/sample2/sample3"}} ) + # Ensure that the uuid4 field is set according to AIP 4235 + assert _UUID4_RE.fullmatch(args[0].request_id) + request_msg.request_id = args[0].request_id assert args[0] == request_msg expected_headers = {"bucket": "projects/sample1/buckets/sample2"} @@ -27952,6 +28322,9 @@ def test_disable_rapid_cache_routing_parameters_request_1_rest(): request_msg = storage_control.DisableRapidCacheRequest( **{"name": "projects/sample1/buckets/sample2/sample3"} ) + # Ensure that the uuid4 field is set according to AIP 4235 + assert _UUID4_RE.fullmatch(args[0].request_id) + request_msg.request_id = args[0].request_id assert args[0] == request_msg expected_headers = {"bucket": "projects/sample1/buckets/sample2"} @@ -27978,6 +28351,9 @@ def test_get_rapid_cache_routing_parameters_request_1_rest(): request_msg = storage_control.GetRapidCacheRequest( **{"name": "projects/sample1/buckets/sample2/sample3"} ) + # Ensure that the uuid4 field is set according to AIP 4235 + assert _UUID4_RE.fullmatch(args[0].request_id) + request_msg.request_id = args[0].request_id assert args[0] == request_msg expected_headers = {"bucket": "projects/sample1/buckets/sample2"} @@ -28002,6 +28378,9 @@ def test_list_rapid_caches_routing_parameters_request_1_rest(): call.assert_called() _, args, kw = call.mock_calls[0] request_msg = storage_control.ListRapidCachesRequest(**{"parent": "sample1"}) + # Ensure that the uuid4 field is set according to AIP 4235 + assert _UUID4_RE.fullmatch(args[0].request_id) + request_msg.request_id = args[0].request_id assert args[0] == request_msg expected_headers = {"bucket": "sample1"} diff --git a/packages/google-devicesandservices-health/google/devicesandservices/health_v4beta/__init__.py b/packages/google-devicesandservices-health/google/devicesandservices/health_v4beta/__init__.py index 5a7467789193..2f37c9a02846 100644 --- a/packages/google-devicesandservices-health/google/devicesandservices/health_v4beta/__init__.py +++ b/packages/google-devicesandservices-health/google/devicesandservices/health_v4beta/__init__.py @@ -122,8 +122,6 @@ RunVO2MaxRollupValue, SedentaryPeriod, SedentaryPeriodRollupValue, - SkinTemperature, - SkinTemperatureRollupValue, SkinTemperatureSensors, Sleep, Steps, @@ -331,8 +329,6 @@ "SedentaryPeriodRollupValue", "SessionTimeInterval", "Settings", - "SkinTemperature", - "SkinTemperatureRollupValue", "SkinTemperatureSensors", "Sleep", "Steps", diff --git a/packages/google-devicesandservices-health/google/devicesandservices/health_v4beta/services/data_points_service/async_client.py b/packages/google-devicesandservices-health/google/devicesandservices/health_v4beta/services/data_points_service/async_client.py index 5b2fd7faaef5..621648785c2e 100644 --- a/packages/google-devicesandservices-health/google/devicesandservices/health_v4beta/services/data_points_service/async_client.py +++ b/packages/google-devicesandservices-health/google/devicesandservices/health_v4beta/services/data_points_service/async_client.py @@ -355,6 +355,18 @@ async def sample_get_data_point(): Format: ``users/{user}/dataTypes/{data_type}/dataPoints/{data_point}`` + Examples: + --------- + + ``users/me/dataTypes/sleep/dataPoints/a1b2c3d4-e5f6-7890-1234-567890abcdef`` + + ``users/1234567890/dataTypes/sleep/dataPoints/a1b2c3d4-e5f6-7890-1234-567890abcdef`` + + The ``{user}`` can be either the alias ``me`` or the + authenticated user's numeric Health User ID (retrieved + via + [GetIdentity][google.devicesandservices.health.v4beta.HealthProfileService.GetIdentity]). + See [DataPoint.name][google.devicesandservices.health.v4beta.DataPoint.name] for examples and possible values. @@ -467,10 +479,17 @@ async def sample_list_data_points(): parent (:class:`str`): Required. Parent data type of the Data Point collection. - Format: ``users/me/dataTypes/{data_type}``, e.g.: + Format: ``users/{user}/dataTypes/{data_type}``, e.g.: - ``users/me/dataTypes/steps`` + - ``users/1234567890/dataTypes/steps`` - ``users/me/dataTypes/weight`` + - ``users/1234567890/dataTypes/weight`` + + The ``{user}`` can be either the alias ``me`` or the + authenticated user's numeric Health User ID (retrieved + via + [GetIdentity][google.devicesandservices.health.v4beta.HealthProfileService.GetIdentity]). For a list of the supported data types see the [DataPoint @@ -605,8 +624,17 @@ async def sample_create_data_point(): data point. parent (:class:`str`): Required. The parent resource name where the data point - will be created. Format: - ``users/{user}/dataTypes/{data_type}`` + will be created. + + Format: ``users/{user}/dataTypes/{data_type}``, e.g.: + + - ``users/me/dataTypes/steps`` + - ``users/1234567890/dataTypes/steps`` + + The ``{user}`` can be either the alias ``me`` or the + authenticated user's numeric Health User ID (retrieved + via + [GetIdentity][google.devicesandservices.health.v4beta.HealthProfileService.GetIdentity]). This corresponds to the ``parent`` field on the ``request`` instance; if ``request`` is provided, this @@ -746,6 +774,18 @@ async def sample_update_data_point(): Format: ``users/{user}/dataTypes/{data_type}/dataPoints/{data_point}`` + Examples: + --------- + + ``users/me/dataTypes/sleep/dataPoints/a1b2c3d4-e5f6-7890-1234-567890abcdef`` + + ``users/1234567890/dataTypes/sleep/dataPoints/a1b2c3d4-e5f6-7890-1234-567890abcdef`` + + The ``{user}`` can be either the alias ``me`` or the + authenticated user's numeric Health User ID (retrieved + via + [GetIdentity][google.devicesandservices.health.v4beta.HealthProfileService.GetIdentity]). + This corresponds to the ``data_point`` field on the ``request`` instance; if ``request`` is provided, this should not be set. @@ -1138,7 +1178,7 @@ async def daily_roll_up_data_points( retry: OptionalRetry = gapic_v1.method.DEFAULT, timeout: Union[float, object] = gapic_v1.method.DEFAULT, metadata: Sequence[Tuple[str, Union[str, bytes]]] = (), - ) -> data_points.DailyRollUpDataPointsResponse: + ) -> pagers.DailyRollUpDataPointsAsyncPager: r"""Roll up data points over civil time intervals for supported data types. @@ -1163,10 +1203,11 @@ async def sample_daily_roll_up_data_points(): ) # Make the request - response = await client.daily_roll_up_data_points(request=request) + page_result = client.daily_roll_up_data_points(request=request) # Handle the response - print(response) + async for response in page_result: + print(response) Args: request (Optional[Union[google.devicesandservices.health_v4beta.types.DailyRollUpDataPointsRequest, dict]]): @@ -1181,9 +1222,12 @@ async def sample_daily_roll_up_data_points(): be of type `bytes`. Returns: - google.devicesandservices.health_v4beta.types.DailyRollUpDataPointsResponse: + google.devicesandservices.health_v4beta.services.data_points_service.pagers.DailyRollUpDataPointsAsyncPager: Response containing the list of rolled up data points. + Iterating over this object will yield + results and resolve additional pages + automatically. """ # Create or coerce a protobuf request object. @@ -1215,6 +1259,17 @@ async def sample_daily_roll_up_data_points(): metadata=metadata, ) + # This method is paged; wrap the response in a pager, which provides + # an `__aiter__` convenience method. + response = pagers.DailyRollUpDataPointsAsyncPager( + method=rpc, + request=request, + response=response, + retry=retry, + timeout=timeout, + metadata=metadata, + ) + # Done; return the response. return response @@ -1232,9 +1287,13 @@ async def export_exercise_tcx( **IMPORTANT:** HTTP clients must append ``?alt=media`` to the request URL to download the raw TCX file. - Example: + Examples: + --------- + ``https://health.googleapis.com/v4/users/me/dataTypes/exercise/dataPoints/EXERCISE_ID:exportExerciseTcx?alt=media`` + ``https://health.googleapis.com/v4/users/1234567890/dataTypes/exercise/dataPoints/EXERCISE_ID:exportExerciseTcx?alt=media`` + Without ``alt=media``, the server returns a JSON response (``ExportExerciseTcxResponse``) which is intended primarily for gRPC clients. @@ -1282,12 +1341,18 @@ async def sample_export_exercise_tcx(): Format: ``users/{user}/dataTypes/exercise/dataPoints/{data_point}`` - Example: - ``users/me/dataTypes/exercise/dataPoints/2026443605080188808`` - The ``{user}`` is the alias ``"me"`` currently. Future - versions may support user IDs. The ``{data_point}`` ID - maps to the exercise ID, which is a long integer. + Examples: + + - ``users/me/dataTypes/exercise/dataPoints/2026443605080188808`` + - ``users/1234567890/dataTypes/exercise/dataPoints/2026443605080188808`` + + The ``{user}`` can be either the alias ``me`` or the + authenticated user's numeric Health User ID (retrieved + via + [GetIdentity][google.devicesandservices.health.v4beta.HealthProfileService.GetIdentity]). + The ``{data_point}`` ID maps to the exercise ID, which + is a long integer. This corresponds to the ``name`` field on the ``request`` instance; if ``request`` is provided, this diff --git a/packages/google-devicesandservices-health/google/devicesandservices/health_v4beta/services/data_points_service/client.py b/packages/google-devicesandservices-health/google/devicesandservices/health_v4beta/services/data_points_service/client.py index 8cb0098475ac..f1f0468d8e34 100644 --- a/packages/google-devicesandservices-health/google/devicesandservices/health_v4beta/services/data_points_service/client.py +++ b/packages/google-devicesandservices-health/google/devicesandservices/health_v4beta/services/data_points_service/client.py @@ -668,6 +668,18 @@ def sample_get_data_point(): Format: ``users/{user}/dataTypes/{data_type}/dataPoints/{data_point}`` + Examples: + --------- + + ``users/me/dataTypes/sleep/dataPoints/a1b2c3d4-e5f6-7890-1234-567890abcdef`` + + ``users/1234567890/dataTypes/sleep/dataPoints/a1b2c3d4-e5f6-7890-1234-567890abcdef`` + + The ``{user}`` can be either the alias ``me`` or the + authenticated user's numeric Health User ID (retrieved + via + [GetIdentity][google.devicesandservices.health.v4beta.HealthProfileService.GetIdentity]). + See [DataPoint.name][google.devicesandservices.health.v4beta.DataPoint.name] for examples and possible values. @@ -777,10 +789,17 @@ def sample_list_data_points(): parent (str): Required. Parent data type of the Data Point collection. - Format: ``users/me/dataTypes/{data_type}``, e.g.: + Format: ``users/{user}/dataTypes/{data_type}``, e.g.: - ``users/me/dataTypes/steps`` + - ``users/1234567890/dataTypes/steps`` - ``users/me/dataTypes/weight`` + - ``users/1234567890/dataTypes/weight`` + + The ``{user}`` can be either the alias ``me`` or the + authenticated user's numeric Health User ID (retrieved + via + [GetIdentity][google.devicesandservices.health.v4beta.HealthProfileService.GetIdentity]). For a list of the supported data types see the [DataPoint @@ -912,8 +931,17 @@ def sample_create_data_point(): data point. parent (str): Required. The parent resource name where the data point - will be created. Format: - ``users/{user}/dataTypes/{data_type}`` + will be created. + + Format: ``users/{user}/dataTypes/{data_type}``, e.g.: + + - ``users/me/dataTypes/steps`` + - ``users/1234567890/dataTypes/steps`` + + The ``{user}`` can be either the alias ``me`` or the + authenticated user's numeric Health User ID (retrieved + via + [GetIdentity][google.devicesandservices.health.v4beta.HealthProfileService.GetIdentity]). This corresponds to the ``parent`` field on the ``request`` instance; if ``request`` is provided, this @@ -1050,6 +1078,18 @@ def sample_update_data_point(): Format: ``users/{user}/dataTypes/{data_type}/dataPoints/{data_point}`` + Examples: + --------- + + ``users/me/dataTypes/sleep/dataPoints/a1b2c3d4-e5f6-7890-1234-567890abcdef`` + + ``users/1234567890/dataTypes/sleep/dataPoints/a1b2c3d4-e5f6-7890-1234-567890abcdef`` + + The ``{user}`` can be either the alias ``me`` or the + authenticated user's numeric Health User ID (retrieved + via + [GetIdentity][google.devicesandservices.health.v4beta.HealthProfileService.GetIdentity]). + This corresponds to the ``data_point`` field on the ``request`` instance; if ``request`` is provided, this should not be set. @@ -1433,7 +1473,7 @@ def daily_roll_up_data_points( retry: OptionalRetry = gapic_v1.method.DEFAULT, timeout: Union[float, object] = gapic_v1.method.DEFAULT, metadata: Sequence[Tuple[str, Union[str, bytes]]] = (), - ) -> data_points.DailyRollUpDataPointsResponse: + ) -> pagers.DailyRollUpDataPointsPager: r"""Roll up data points over civil time intervals for supported data types. @@ -1458,10 +1498,11 @@ def sample_daily_roll_up_data_points(): ) # Make the request - response = client.daily_roll_up_data_points(request=request) + page_result = client.daily_roll_up_data_points(request=request) # Handle the response - print(response) + for response in page_result: + print(response) Args: request (Union[google.devicesandservices.health_v4beta.types.DailyRollUpDataPointsRequest, dict]): @@ -1476,9 +1517,12 @@ def sample_daily_roll_up_data_points(): be of type `bytes`. Returns: - google.devicesandservices.health_v4beta.types.DailyRollUpDataPointsResponse: + google.devicesandservices.health_v4beta.services.data_points_service.pagers.DailyRollUpDataPointsPager: Response containing the list of rolled up data points. + Iterating over this object will yield + results and resolve additional pages + automatically. """ # Create or coerce a protobuf request object. @@ -1510,6 +1554,17 @@ def sample_daily_roll_up_data_points(): metadata=metadata, ) + # This method is paged; wrap the response in a pager, which provides + # an `__iter__` convenience method. + response = pagers.DailyRollUpDataPointsPager( + method=rpc, + request=request, + response=response, + retry=retry, + timeout=timeout, + metadata=metadata, + ) + # Done; return the response. return response @@ -1527,9 +1582,13 @@ def export_exercise_tcx( **IMPORTANT:** HTTP clients must append ``?alt=media`` to the request URL to download the raw TCX file. - Example: + Examples: + --------- + ``https://health.googleapis.com/v4/users/me/dataTypes/exercise/dataPoints/EXERCISE_ID:exportExerciseTcx?alt=media`` + ``https://health.googleapis.com/v4/users/1234567890/dataTypes/exercise/dataPoints/EXERCISE_ID:exportExerciseTcx?alt=media`` + Without ``alt=media``, the server returns a JSON response (``ExportExerciseTcxResponse``) which is intended primarily for gRPC clients. @@ -1577,12 +1636,18 @@ def sample_export_exercise_tcx(): Format: ``users/{user}/dataTypes/exercise/dataPoints/{data_point}`` - Example: - ``users/me/dataTypes/exercise/dataPoints/2026443605080188808`` - The ``{user}`` is the alias ``"me"`` currently. Future - versions may support user IDs. The ``{data_point}`` ID - maps to the exercise ID, which is a long integer. + Examples: + + - ``users/me/dataTypes/exercise/dataPoints/2026443605080188808`` + - ``users/1234567890/dataTypes/exercise/dataPoints/2026443605080188808`` + + The ``{user}`` can be either the alias ``me`` or the + authenticated user's numeric Health User ID (retrieved + via + [GetIdentity][google.devicesandservices.health.v4beta.HealthProfileService.GetIdentity]). + The ``{data_point}`` ID maps to the exercise ID, which + is a long integer. This corresponds to the ``name`` field on the ``request`` instance; if ``request`` is provided, this diff --git a/packages/google-devicesandservices-health/google/devicesandservices/health_v4beta/services/data_points_service/pagers.py b/packages/google-devicesandservices-health/google/devicesandservices/health_v4beta/services/data_points_service/pagers.py index 05c1ce28588c..a2c94f57b1d7 100644 --- a/packages/google-devicesandservices-health/google/devicesandservices/health_v4beta/services/data_points_service/pagers.py +++ b/packages/google-devicesandservices-health/google/devicesandservices/health_v4beta/services/data_points_service/pagers.py @@ -507,3 +507,159 @@ async def async_generator(): def __repr__(self) -> str: return "{0}<{1!r}>".format(self.__class__.__name__, self._response) + + +class DailyRollUpDataPointsPager: + """A pager for iterating through ``daily_roll_up_data_points`` requests. + + This class thinly wraps an initial + :class:`google.devicesandservices.health_v4beta.types.DailyRollUpDataPointsResponse` object, and + provides an ``__iter__`` method to iterate through its + ``rollup_data_points`` field. + + If there are more pages, the ``__iter__`` method will make additional + ``DailyRollUpDataPoints`` requests and continue to iterate + through the ``rollup_data_points`` field on the + corresponding responses. + + All the usual :class:`google.devicesandservices.health_v4beta.types.DailyRollUpDataPointsResponse` + 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[..., data_points.DailyRollUpDataPointsResponse], + request: data_points.DailyRollUpDataPointsRequest, + response: data_points.DailyRollUpDataPointsResponse, + *, + 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.devicesandservices.health_v4beta.types.DailyRollUpDataPointsRequest): + The initial request object. + response (google.devicesandservices.health_v4beta.types.DailyRollUpDataPointsResponse): + 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 = data_points.DailyRollUpDataPointsRequest(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[data_points.DailyRollUpDataPointsResponse]: + 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[data_points.DailyRollupDataPoint]: + for page in self.pages: + yield from page.rollup_data_points + + def __repr__(self) -> str: + return "{0}<{1!r}>".format(self.__class__.__name__, self._response) + + +class DailyRollUpDataPointsAsyncPager: + """A pager for iterating through ``daily_roll_up_data_points`` requests. + + This class thinly wraps an initial + :class:`google.devicesandservices.health_v4beta.types.DailyRollUpDataPointsResponse` object, and + provides an ``__aiter__`` method to iterate through its + ``rollup_data_points`` field. + + If there are more pages, the ``__aiter__`` method will make additional + ``DailyRollUpDataPoints`` requests and continue to iterate + through the ``rollup_data_points`` field on the + corresponding responses. + + All the usual :class:`google.devicesandservices.health_v4beta.types.DailyRollUpDataPointsResponse` + 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[data_points.DailyRollUpDataPointsResponse]], + request: data_points.DailyRollUpDataPointsRequest, + response: data_points.DailyRollUpDataPointsResponse, + *, + 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.devicesandservices.health_v4beta.types.DailyRollUpDataPointsRequest): + The initial request object. + response (google.devicesandservices.health_v4beta.types.DailyRollUpDataPointsResponse): + 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 = data_points.DailyRollUpDataPointsRequest(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[data_points.DailyRollUpDataPointsResponse]: + 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[data_points.DailyRollupDataPoint]: + async def async_generator(): + async for page in self.pages: + for response in page.rollup_data_points: + yield response + + return async_generator() + + def __repr__(self) -> str: + return "{0}<{1!r}>".format(self.__class__.__name__, self._response) diff --git a/packages/google-devicesandservices-health/google/devicesandservices/health_v4beta/services/data_points_service/transports/grpc.py b/packages/google-devicesandservices-health/google/devicesandservices/health_v4beta/services/data_points_service/transports/grpc.py index bd27dc6cd704..beaf4107c1b0 100644 --- a/packages/google-devicesandservices-health/google/devicesandservices/health_v4beta/services/data_points_service/transports/grpc.py +++ b/packages/google-devicesandservices-health/google/devicesandservices/health_v4beta/services/data_points_service/transports/grpc.py @@ -579,9 +579,13 @@ def export_exercise_tcx( **IMPORTANT:** HTTP clients must append ``?alt=media`` to the request URL to download the raw TCX file. - Example: + Examples: + --------- + ``https://health.googleapis.com/v4/users/me/dataTypes/exercise/dataPoints/EXERCISE_ID:exportExerciseTcx?alt=media`` + ``https://health.googleapis.com/v4/users/1234567890/dataTypes/exercise/dataPoints/EXERCISE_ID:exportExerciseTcx?alt=media`` + Without ``alt=media``, the server returns a JSON response (``ExportExerciseTcxResponse``) which is intended primarily for gRPC clients. diff --git a/packages/google-devicesandservices-health/google/devicesandservices/health_v4beta/services/data_points_service/transports/grpc_asyncio.py b/packages/google-devicesandservices-health/google/devicesandservices/health_v4beta/services/data_points_service/transports/grpc_asyncio.py index 5ad45e6e34d9..b3d7ed3cf11d 100644 --- a/packages/google-devicesandservices-health/google/devicesandservices/health_v4beta/services/data_points_service/transports/grpc_asyncio.py +++ b/packages/google-devicesandservices-health/google/devicesandservices/health_v4beta/services/data_points_service/transports/grpc_asyncio.py @@ -596,9 +596,13 @@ def export_exercise_tcx( **IMPORTANT:** HTTP clients must append ``?alt=media`` to the request URL to download the raw TCX file. - Example: + Examples: + --------- + ``https://health.googleapis.com/v4/users/me/dataTypes/exercise/dataPoints/EXERCISE_ID:exportExerciseTcx?alt=media`` + ``https://health.googleapis.com/v4/users/1234567890/dataTypes/exercise/dataPoints/EXERCISE_ID:exportExerciseTcx?alt=media`` + Without ``alt=media``, the server returns a JSON response (``ExportExerciseTcxResponse``) which is intended primarily for gRPC clients. diff --git a/packages/google-devicesandservices-health/google/devicesandservices/health_v4beta/types/__init__.py b/packages/google-devicesandservices-health/google/devicesandservices/health_v4beta/types/__init__.py index a2a3e7a333f5..9774cd2b5dfa 100644 --- a/packages/google-devicesandservices-health/google/devicesandservices/health_v4beta/types/__init__.py +++ b/packages/google-devicesandservices-health/google/devicesandservices/health_v4beta/types/__init__.py @@ -83,8 +83,6 @@ RunVO2MaxRollupValue, SedentaryPeriod, SedentaryPeriodRollupValue, - SkinTemperature, - SkinTemperatureRollupValue, SkinTemperatureSensors, Sleep, Steps, @@ -238,8 +236,6 @@ "RunVO2MaxRollupValue", "SedentaryPeriod", "SedentaryPeriodRollupValue", - "SkinTemperature", - "SkinTemperatureRollupValue", "SkinTemperatureSensors", "Sleep", "Steps", diff --git a/packages/google-devicesandservices-health/google/devicesandservices/health_v4beta/types/data_model.py b/packages/google-devicesandservices-health/google/devicesandservices/health_v4beta/types/data_model.py index 8122c92cb67f..ca5f776c289f 100644 --- a/packages/google-devicesandservices-health/google/devicesandservices/health_v4beta/types/data_model.py +++ b/packages/google-devicesandservices-health/google/devicesandservices/health_v4beta/types/data_model.py @@ -48,8 +48,6 @@ "BasalEnergyBurned", "BodyFat", "BodyFatRollupValue", - "SkinTemperature", - "SkinTemperatureRollupValue", "SkinTemperatureSensors", "CoreBodyTemperature", "CoreBodyTemperatureRollupValue", @@ -853,159 +851,6 @@ class BodyFatRollupValue(proto.Message): ) -class SkinTemperature(proto.Message): - r"""////////////////////////////////////////////////////////////////////////// - SkinTemperature - ////////////////////////////////////////////////////////////////////////// - Skin temperature measurement. - - - .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields - - Attributes: - sample_time (google.devicesandservices.health_v4beta.types.ObservationSampleTime): - Required. The time at which skin temperature - was measured. - temperature_celsius (float): - Required. The skin temperature in Celsius. Must be in the - range ``[0, 100]``. - - This field is a member of `oneof`_ ``_temperature_celsius``. - baseline_temperature_celsius (float): - Required. The baseline skin temperature in Celsius. Must be - in the range ``[0, 100]``. - - This field is a member of `oneof`_ ``_baseline_temperature_celsius``. - metadata (google.devicesandservices.health_v4beta.types.SkinTemperature.SkinTemperatureMetadata): - Optional. Metadata for the skin temperature - measurement. - """ - - class MeasurementLocation(proto.Enum): - r"""The location of the skin temperature measurement. - - Values: - MEASUREMENT_LOCATION_UNSPECIFIED (0): - Measurement location is unspecified. - OTHER (1): - Other measurement location. - FINGER (2): - Finger measurement location. - TOE (3): - Toe measurement location. - WRIST (4): - Wrist measurement location. - """ - - MEASUREMENT_LOCATION_UNSPECIFIED = 0 - OTHER = 1 - FINGER = 2 - TOE = 3 - WRIST = 4 - - class MeasurementState(proto.Enum): - r"""The motion state when the skin temperature was measured. - - Values: - MEASUREMENT_STATE_UNSPECIFIED (0): - Measurement state is unspecified. - MEASUREMENT_STATE_OTHER (1): - Other measurement state. - MEASUREMENT_STATE_AT_REST (2): - Measurement state at rest. - MEASUREMENT_STATE_SLEEP (3): - Measurement state during sleep. - """ - - MEASUREMENT_STATE_UNSPECIFIED = 0 - MEASUREMENT_STATE_OTHER = 1 - MEASUREMENT_STATE_AT_REST = 2 - MEASUREMENT_STATE_SLEEP = 3 - - class SkinTemperatureMetadata(proto.Message): - r"""Metadata for the skin temperature measurement. - - Attributes: - measurement_location (google.devicesandservices.health_v4beta.types.SkinTemperature.MeasurementLocation): - Optional. The location of the skin - temperature measurement. - measurement_state (google.devicesandservices.health_v4beta.types.SkinTemperature.MeasurementState): - Optional. The motion state of the skin - temperature measurement. - """ - - measurement_location: "SkinTemperature.MeasurementLocation" = proto.Field( - proto.ENUM, - number=1, - enum="SkinTemperature.MeasurementLocation", - ) - measurement_state: "SkinTemperature.MeasurementState" = proto.Field( - proto.ENUM, - number=2, - enum="SkinTemperature.MeasurementState", - ) - - sample_time: data_coordinates.ObservationSampleTime = proto.Field( - proto.MESSAGE, - number=1, - message=data_coordinates.ObservationSampleTime, - ) - temperature_celsius: float = proto.Field( - proto.DOUBLE, - number=2, - optional=True, - ) - baseline_temperature_celsius: float = proto.Field( - proto.DOUBLE, - number=3, - optional=True, - ) - metadata: SkinTemperatureMetadata = proto.Field( - proto.MESSAGE, - number=4, - message=SkinTemperatureMetadata, - ) - - -class SkinTemperatureRollupValue(proto.Message): - r"""Represents the result of the rollup of the skin temperature - data type. - - - .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields - - Attributes: - temperature_celsius_avg (float): - Average skin temperature in Celsius. - - This field is a member of `oneof`_ ``_temperature_celsius_avg``. - temperature_celsius_max (float): - Maximum skin temperature in Celsius. - - This field is a member of `oneof`_ ``_temperature_celsius_max``. - temperature_celsius_min (float): - Minimum skin temperature in Celsius. - - This field is a member of `oneof`_ ``_temperature_celsius_min``. - """ - - temperature_celsius_avg: float = proto.Field( - proto.DOUBLE, - number=1, - optional=True, - ) - temperature_celsius_max: float = proto.Field( - proto.DOUBLE, - number=2, - optional=True, - ) - temperature_celsius_min: float = proto.Field( - proto.DOUBLE, - number=3, - optional=True, - ) - - class SkinTemperatureSensors(proto.Message): r"""Skin temperature sensor data containing multi-sensor readings. diff --git a/packages/google-devicesandservices-health/google/devicesandservices/health_v4beta/types/data_points.py b/packages/google-devicesandservices-health/google/devicesandservices/health_v4beta/types/data_points.py index 928bd33b4cba..cd6196fe0894 100644 --- a/packages/google-devicesandservices-health/google/devicesandservices/health_v4beta/types/data_points.py +++ b/packages/google-devicesandservices-health/google/devicesandservices/health_v4beta/types/data_points.py @@ -277,11 +277,6 @@ class DataPoint(proto.Message): Optional. Data for points in the ``moods`` sample data type collection. - This field is a member of `oneof`_ ``data``. - skin_temperature (google.devicesandservices.health_v4beta.types.SkinTemperature): - Optional. Data for points in the ``skin-temperature`` sample - data type collection. - This field is a member of `oneof`_ ``data``. skin_temperature_sensors (google.devicesandservices.health_v4beta.types.SkinTemperatureSensors): Optional. Data for points in the @@ -297,12 +292,19 @@ class DataPoint(proto.Message): Format: ``users/{user}/dataTypes/{data_type}/dataPoints/{data_point}`` - Example: - ``users/abcd1234/dataTypes/sleep/dataPoints/a1b2c3d4-e5f6-7890-1234-567890abcdef`` + Examples: + --------- - The ``{user}`` ID is a system-generated identifier, as - described in - [Identity.health_user_id][google.devicesandservices.health.v4beta.Identity.health_user_id]. + ``users/me/dataTypes/sleep/dataPoints/a1b2c3d4-e5f6-7890-1234-567890abcdef`` + + ``users/1234567890/dataTypes/sleep/dataPoints/a1b2c3d4-e5f6-7890-1234-567890abcdef`` + + The ``{user}`` can be either the alias ``me`` or the + authenticated user's numeric Health User ID, which can be + retrieved by calling + [GetIdentity][google.devicesandservices.health.v4beta.HealthProfileService.GetIdentity] + (see + [Identity.health_user_id][google.devicesandservices.health.v4beta.Identity.health_user_id]). The ``{data_type}`` ID corresponds to the kebab-case version of the field names in the [DataPoint @@ -575,12 +577,6 @@ class DataPoint(proto.Message): oneof="data", message=data_model.Moods, ) - skin_temperature: data_model.SkinTemperature = proto.Field( - proto.MESSAGE, - number=54, - oneof="data", - message=data_model.SkinTemperature, - ) skin_temperature_sensors: data_model.SkinTemperatureSensors = proto.Field( proto.MESSAGE, number=60, @@ -779,11 +775,6 @@ class ReconciledDataPoint(proto.Message): Data for points in the ``blood-glucose`` sample data type collection. - This field is a member of `oneof`_ ``data``. - skin_temperature (google.devicesandservices.health_v4beta.types.SkinTemperature): - Data for points in the ``skin-temperature`` sample data type - collection. - This field is a member of `oneof`_ ``data``. skin_temperature_sensors (google.devicesandservices.health_v4beta.types.SkinTemperatureSensors): Data for points in the ``skin-temperature-sensors`` sample @@ -799,12 +790,19 @@ class ReconciledDataPoint(proto.Message): Format: ``users/{user}/dataTypes/{data_type}/dataPoints/{data_point}`` - Example: - ``users/abcd1234/dataTypes/sleep/dataPoints/a1b2c3d4-e5f6-7890-1234-567890abcdef`` + Examples: + --------- - The ``{user}`` ID is a system-generated identifier, as - described in - [Identity.health_user_id][google.devicesandservices.health.v4beta.Identity.health_user_id]. + ``users/me/dataTypes/sleep/dataPoints/a1b2c3d4-e5f6-7890-1234-567890abcdef`` + + ``users/1234567890/dataTypes/sleep/dataPoints/a1b2c3d4-e5f6-7890-1234-567890abcdef`` + + The ``{user}`` can be either the alias ``me`` or the + authenticated user's numeric Health User ID, which can be + retrieved by calling + [GetIdentity][google.devicesandservices.health.v4beta.HealthProfileService.GetIdentity] + (see + [Identity.health_user_id][google.devicesandservices.health.v4beta.Identity.health_user_id]). The ``{data_type}`` ID corresponds to the kebab-case version of the field names in the [DataPoint @@ -1026,12 +1024,6 @@ class ReconciledDataPoint(proto.Message): oneof="data", message=data_model.BloodGlucose, ) - skin_temperature: data_model.SkinTemperature = proto.Field( - proto.MESSAGE, - number=54, - oneof="data", - message=data_model.SkinTemperature, - ) skin_temperature_sensors: data_model.SkinTemperatureSensors = proto.Field( proto.MESSAGE, number=30, @@ -1187,11 +1179,6 @@ class RollupDataPoint(proto.Message): Returned by default when rolling up data points from the ``blood-glucose`` data type. - This field is a member of `oneof`_ ``value``. - skin_temperature (google.devicesandservices.health_v4beta.types.SkinTemperatureRollupValue): - Returned by default when rolling up data points from the - ``skin-temperature`` data type. - This field is a member of `oneof`_ ``value``. start_time (google.protobuf.timestamp_pb2.Timestamp): Start time of the window this value @@ -1329,12 +1316,6 @@ class RollupDataPoint(proto.Message): oneof="value", message=data_model.BloodGlucoseRollupValue, ) - skin_temperature: data_model.SkinTemperatureRollupValue = proto.Field( - proto.MESSAGE, - number=27, - oneof="value", - message=data_model.SkinTemperatureRollupValue, - ) start_time: timestamp_pb2.Timestamp = proto.Field( proto.MESSAGE, number=1, @@ -1505,11 +1486,6 @@ class DailyRollupDataPoint(proto.Message): Returned by default when rolling up data points from the ``blood-glucose`` data type. - This field is a member of `oneof`_ ``value``. - skin_temperature (google.devicesandservices.health_v4beta.types.SkinTemperatureRollupValue): - Returned by default when rolling up data points from the - ``skin-temperature`` data type. - This field is a member of `oneof`_ ``value``. civil_start_time (google.devicesandservices.health_v4beta.types.CivilDateTime): Start time of the window this value @@ -1659,12 +1635,6 @@ class DailyRollupDataPoint(proto.Message): oneof="value", message=data_model.BloodGlucoseRollupValue, ) - skin_temperature: data_model.SkinTemperatureRollupValue = proto.Field( - proto.MESSAGE, - number=29, - oneof="value", - message=data_model.SkinTemperatureRollupValue, - ) civil_start_time: data_coordinates.CivilDateTime = proto.Field( proto.MESSAGE, number=1, @@ -1687,6 +1657,17 @@ class GetDataPointRequest(proto.Message): Format: ``users/{user}/dataTypes/{data_type}/dataPoints/{data_point}`` + Examples: + --------- + + ``users/me/dataTypes/sleep/dataPoints/a1b2c3d4-e5f6-7890-1234-567890abcdef`` + + ``users/1234567890/dataTypes/sleep/dataPoints/a1b2c3d4-e5f6-7890-1234-567890abcdef`` + + The ``{user}`` can be either the alias ``me`` or the + authenticated user's numeric Health User ID (retrieved via + [GetIdentity][google.devicesandservices.health.v4beta.HealthProfileService.GetIdentity]). + See [DataPoint.name][google.devicesandservices.health.v4beta.DataPoint.name] for examples and possible values. @@ -1705,10 +1686,16 @@ class ListDataPointsRequest(proto.Message): parent (str): Required. Parent data type of the Data Point collection. - Format: ``users/me/dataTypes/{data_type}``, e.g.: + Format: ``users/{user}/dataTypes/{data_type}``, e.g.: - ``users/me/dataTypes/steps`` + - ``users/1234567890/dataTypes/steps`` - ``users/me/dataTypes/weight`` + - ``users/1234567890/dataTypes/weight`` + + The ``{user}`` can be either the alias ``me`` or the + authenticated user's numeric Health User ID (retrieved via + [GetIdentity][google.devicesandservices.health.v4beta.HealthProfileService.GetIdentity]). For a list of the supported data types see the [DataPoint data][google.devicesandservices.health.v4beta.DataPoint] @@ -1845,24 +1832,31 @@ class ListDataPointsRequest(proto.Message): If empty, data points from all available data sources will be returned. - Format: ``users/me/dataSourceFamilies/{data_source_family}`` + Format: + ``users/{user}/dataSourceFamilies/{data_source_family}`` + + The ``{user}`` can be either the alias ``me`` or the + authenticated user's numeric Health User ID, retrieved via + [GetIdentity][google.devicesandservices.health.v4beta.HealthProfileService.GetIdentity] + (e.g. ``users/me/dataSourceFamilies/...`` or + ``users/1234567890/dataSourceFamilies/...``). The supported values are: - - ``users/me/dataSourceFamilies/all-sources`` - Default + - ``users/{user}/dataSourceFamilies/all-sources`` - Default value. Includes data from all available data sources. - - ``users/me/dataSourceFamilies/google-wearables`` - + - ``users/{user}/dataSourceFamilies/google-wearables`` - Includes data from Google and Fitbit tracker devices (such as Fitbit trackers and Pixel Watch). Excludes manually logged data. - - ``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. + - ``users/{user}/dataSourceFamilies/google-sources`` - + Includes first-party Google data, such as data from + tracker devices, manually logged data, and Health Connect. + - ``users/{user}/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 types may only read the data they wrote @@ -1939,7 +1933,16 @@ class CreateDataPointRequest(proto.Message): Attributes: parent (str): Required. The parent resource name where the data point will - be created. Format: ``users/{user}/dataTypes/{data_type}`` + be created. + + Format: ``users/{user}/dataTypes/{data_type}``, e.g.: + + - ``users/me/dataTypes/steps`` + - ``users/1234567890/dataTypes/steps`` + + The ``{user}`` can be either the alias ``me`` or the + authenticated user's numeric Health User ID (retrieved via + [GetIdentity][google.devicesandservices.health.v4beta.HealthProfileService.GetIdentity]). data_point (google.devicesandservices.health_v4beta.types.DataPoint): Required. The data point to create. """ @@ -1971,6 +1974,17 @@ class UpdateDataPointRequest(proto.Message): Format: ``users/{user}/dataTypes/{data_type}/dataPoints/{data_point}`` + + Examples: + --------- + + ``users/me/dataTypes/sleep/dataPoints/a1b2c3d4-e5f6-7890-1234-567890abcdef`` + + ``users/1234567890/dataTypes/sleep/dataPoints/a1b2c3d4-e5f6-7890-1234-567890abcdef`` + + The ``{user}`` can be either the alias ``me`` or the + authenticated user's numeric Health User ID (retrieved via + [GetIdentity][google.devicesandservices.health.v4beta.HealthProfileService.GetIdentity]). """ data_point: "DataPoint" = proto.Field( @@ -1990,10 +2004,17 @@ class BatchDeleteDataPointsRequest(proto.Message): Attributes: parent (str): Optional. Parent (data type) for the Data Point collection - Format: ``users/me/dataTypes/{data_type}``, e.g.: + + Format: ``users/{user}/dataTypes/{data_type}``, e.g.: - ``users/me/dataTypes/steps`` + - ``users/1234567890/dataTypes/steps`` - ``users/me/dataTypes/-`` + - ``users/1234567890/dataTypes/-`` + + The ``{user}`` can be either the alias ``me`` or the + authenticated user's numeric Health User ID (retrieved via + [GetIdentity][google.devicesandservices.health.v4beta.HealthProfileService.GetIdentity]). For a list of the supported data types see the [DataPoint data][google.devicesandservices.health.v4beta.DataPoint] @@ -2061,10 +2082,16 @@ class ReconcileDataPointsRequest(proto.Message): parent (str): Required. Parent data type of the Data Point collection. - Format: ``users/me/dataTypes/{data_type}``, e.g.: + Format: ``users/{user}/dataTypes/{data_type}``, e.g.: - ``users/me/dataTypes/steps`` + - ``users/1234567890/dataTypes/steps`` - ``users/me/dataTypes/heart-rate`` + - ``users/1234567890/dataTypes/heart-rate`` + + The ``{user}`` can be either the alias ``me`` or the + authenticated user's numeric Health User ID (retrieved via + [GetIdentity][google.devicesandservices.health.v4beta.HealthProfileService.GetIdentity]). For a list of the supported data types see the [DataPoint data][google.devicesandservices.health.v4beta.DataPoint] @@ -2092,22 +2119,31 @@ class ReconcileDataPointsRequest(proto.Message): If empty, data points from all data sources will be reconciled. - Format: ``users/me/dataSourceFamilies/{data_source_family}`` + Format: + ``users/{user}/dataSourceFamilies/{data_source_family}`` - - ``users/me/dataSourceFamilies/all-sources`` - Default + The ``{user}`` can be either the alias ``me`` or the + authenticated user's numeric Health User ID, retrieved via + [GetIdentity][google.devicesandservices.health.v4beta.HealthProfileService.GetIdentity] + (e.g. ``users/me/dataSourceFamilies/...`` or + ``users/1234567890/dataSourceFamilies/...``). + + The supported values are: + + - ``users/{user}/dataSourceFamilies/all-sources`` - Default value. Includes data from all available data sources. - - ``users/me/dataSourceFamilies/google-wearables`` - + - ``users/{user}/dataSourceFamilies/google-wearables`` - Includes data from Google and Fitbit tracker devices (such as Fitbit trackers and Pixel Watch). Excludes manually logged data. - - ``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. + - ``users/{user}/dataSourceFamilies/google-sources`` - + Includes first-party Google data, such as data from + tracker devices, manually logged data, and Health Connect. + - ``users/{user}/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 @@ -2177,7 +2213,13 @@ class RollUpDataPointsRequest(proto.Message): Format: ``users/{user}/dataTypes/{data_type}``, e.g.: - ``users/me/dataTypes/steps`` + - ``users/1234567890/dataTypes/steps`` - ``users/me/dataTypes/distance`` + - ``users/1234567890/dataTypes/distance`` + + The ``{user}`` can be either the alias ``me`` or the + authenticated user's numeric Health User ID (retrieved via + [GetIdentity][google.devicesandservices.health.v4beta.HealthProfileService.GetIdentity]). For a list of the supported data types see the [RollupDataPoint @@ -2214,24 +2256,31 @@ class RollUpDataPointsRequest(proto.Message): If empty, data points from all available data sources will be rolled up. - Format: ``users/me/dataSourceFamilies/{data_source_family}`` + Format: + ``users/{user}/dataSourceFamilies/{data_source_family}`` + + The ``{user}`` can be either the alias ``me`` or the + authenticated user's numeric Health User ID, retrieved via + [GetIdentity][google.devicesandservices.health.v4beta.HealthProfileService.GetIdentity] + (e.g. ``users/me/dataSourceFamilies/...`` or + ``users/1234567890/dataSourceFamilies/...``). The supported values are: - - ``users/me/dataSourceFamilies/all-sources`` - Default + - ``users/{user}/dataSourceFamilies/all-sources`` - Default value. Includes data from all available data sources. - - ``users/me/dataSourceFamilies/google-wearables`` - + - ``users/{user}/dataSourceFamilies/google-wearables`` - Includes data from Google and Fitbit tracker devices (such as Fitbit trackers and Pixel Watch). Excludes manually logged data. - - ``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. + - ``users/{user}/dataSourceFamilies/google-sources`` - + Includes first-party Google data, such as data from + tracker devices, manually logged data, and Health Connect. + - ``users/{user}/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 @@ -2308,7 +2357,13 @@ class DailyRollUpDataPointsRequest(proto.Message): Format: ``users/{user}/dataTypes/{data_type}``, e.g.: - ``users/me/dataTypes/steps`` + - ``users/1234567890/dataTypes/steps`` - ``users/me/dataTypes/distance`` + - ``users/1234567890/dataTypes/distance`` + + The ``{user}`` can be either the alias ``me`` or the + authenticated user's numeric Health User ID (retrieved via + [GetIdentity][google.devicesandservices.health.v4beta.HealthProfileService.GetIdentity]). For a list of the supported data types see the [DailyRollupDataPoint @@ -2336,32 +2391,39 @@ class DailyRollUpDataPointsRequest(proto.Message): is 10000; values above that will be truncated accordingly. page_token (str): - Optional. The ``next_page_token`` from a previous request, - if any. All other request fields need to be the same as in - the initial request when the page token is specified. + Optional. The next_page_token from a previous request, if + any. All other request fields need to be the same as in the + initial request when the page token is specified. data_source_family (str): Optional. The data source family name to roll up. If empty, data points from all available data sources will be rolled up. - Format: ``users/me/dataSourceFamilies/{data_source_family}`` + Format: + ``users/{user}/dataSourceFamilies/{data_source_family}`` + + The ``{user}`` can be either the alias ``me`` or the + authenticated user's numeric Health User ID, retrieved via + [GetIdentity][google.devicesandservices.health.v4beta.HealthProfileService.GetIdentity] + (e.g. ``users/me/dataSourceFamilies/...`` or + ``users/1234567890/dataSourceFamilies/...``). The supported values are: - - ``users/me/dataSourceFamilies/all-sources`` - Default + - ``users/{user}/dataSourceFamilies/all-sources`` - Default value. Includes data from all available data sources. - - ``users/me/dataSourceFamilies/google-wearables`` - + - ``users/{user}/dataSourceFamilies/google-wearables`` - Includes data from Google and Fitbit tracker devices (such as Fitbit trackers and Pixel Watch). Excludes manually logged data. - - ``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. + - ``users/{user}/dataSourceFamilies/google-sources`` - + Includes first-party Google data, such as data from + tracker devices, manually logged data, and Health Connect. + - ``users/{user}/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 @@ -2406,13 +2468,25 @@ class DailyRollUpDataPointsResponse(proto.Message): Attributes: rollup_data_points (MutableSequence[google.devicesandservices.health_v4beta.types.DailyRollupDataPoint]): Values for each aggregation time window. + next_page_token (str): + A token, which can be sent as ``page_token`` to retrieve the + next page. If this field is omitted, there are no subsequent + pages. """ + @property + def raw_page(self): + return self + rollup_data_points: MutableSequence["DailyRollupDataPoint"] = proto.RepeatedField( proto.MESSAGE, number=1, message="DailyRollupDataPoint", ) + next_page_token: str = proto.Field( + proto.STRING, + number=2, + ) class DataType(proto.Message): @@ -2427,7 +2501,14 @@ class DataType(proto.Message): name (str): Identifier. The resource name of the data type. - Format: ``users/{user}/dataTypes/{data_type}`` + Format: ``users/{user}/dataTypes/{data_type}``, e.g.: + + - ``users/me/dataTypes/steps`` + - ``users/1234567890/dataTypes/steps`` + + The ``{user}`` can be either the alias ``me`` or the + authenticated user's numeric Health User ID (retrieved via + [GetIdentity][google.devicesandservices.health.v4beta.HealthProfileService.GetIdentity]). See [DataPoint.name][google.devicesandservices.health.v4beta.DataPoint.name] @@ -2450,12 +2531,17 @@ class ExportExerciseTcxRequest(proto.Message): Format: ``users/{user}/dataTypes/exercise/dataPoints/{data_point}`` - Example: - ``users/me/dataTypes/exercise/dataPoints/2026443605080188808`` - The ``{user}`` is the alias ``"me"`` currently. Future - versions may support user IDs. The ``{data_point}`` ID maps - to the exercise ID, which is a long integer. + Examples: + + - ``users/me/dataTypes/exercise/dataPoints/2026443605080188808`` + - ``users/1234567890/dataTypes/exercise/dataPoints/2026443605080188808`` + + The ``{user}`` can be either the alias ``me`` or the + authenticated user's numeric Health User ID (retrieved via + [GetIdentity][google.devicesandservices.health.v4beta.HealthProfileService.GetIdentity]). + The ``{data_point}`` ID maps to the exercise ID, which is a + long integer. partial_data (bool): Optional. Indicates whether to include the TCX data points when the GPS data is not available. If not specified, diff --git a/packages/google-devicesandservices-health/samples/generated_samples/health_v4beta_generated_data_points_service_daily_roll_up_data_points_async.py b/packages/google-devicesandservices-health/samples/generated_samples/health_v4beta_generated_data_points_service_daily_roll_up_data_points_async.py index 2c875a06167e..dc6ba1431617 100644 --- a/packages/google-devicesandservices-health/samples/generated_samples/health_v4beta_generated_data_points_service_daily_roll_up_data_points_async.py +++ b/packages/google-devicesandservices-health/samples/generated_samples/health_v4beta_generated_data_points_service_daily_roll_up_data_points_async.py @@ -44,10 +44,11 @@ async def sample_daily_roll_up_data_points(): ) # Make the request - response = await client.daily_roll_up_data_points(request=request) + page_result = client.daily_roll_up_data_points(request=request) # Handle the response - print(response) + async for response in page_result: + print(response) # [END health_v4beta_generated_DataPointsService_DailyRollUpDataPoints_async] diff --git a/packages/google-devicesandservices-health/samples/generated_samples/health_v4beta_generated_data_points_service_daily_roll_up_data_points_sync.py b/packages/google-devicesandservices-health/samples/generated_samples/health_v4beta_generated_data_points_service_daily_roll_up_data_points_sync.py index 078d544af058..fff3225ab2e6 100644 --- a/packages/google-devicesandservices-health/samples/generated_samples/health_v4beta_generated_data_points_service_daily_roll_up_data_points_sync.py +++ b/packages/google-devicesandservices-health/samples/generated_samples/health_v4beta_generated_data_points_service_daily_roll_up_data_points_sync.py @@ -44,10 +44,11 @@ def sample_daily_roll_up_data_points(): ) # Make the request - response = client.daily_roll_up_data_points(request=request) + page_result = client.daily_roll_up_data_points(request=request) # Handle the response - print(response) + for response in page_result: + print(response) # [END health_v4beta_generated_DataPointsService_DailyRollUpDataPoints_sync] diff --git a/packages/google-devicesandservices-health/samples/generated_samples/snippet_metadata_google.devicesandservices.health.v4beta.json b/packages/google-devicesandservices-health/samples/generated_samples/snippet_metadata_google.devicesandservices.health.v4beta.json index 51860ff61561..8ebf8d5bd63e 100644 --- a/packages/google-devicesandservices-health/samples/generated_samples/snippet_metadata_google.devicesandservices.health.v4beta.json +++ b/packages/google-devicesandservices-health/samples/generated_samples/snippet_metadata_google.devicesandservices.health.v4beta.json @@ -368,7 +368,7 @@ "type": "Sequence[Tuple[str, Union[str, bytes]]]" } ], - "resultType": "google.devicesandservices.health_v4beta.types.DailyRollUpDataPointsResponse", + "resultType": "google.devicesandservices.health_v4beta.services.data_points_service.pagers.DailyRollUpDataPointsAsyncPager", "shortName": "daily_roll_up_data_points" }, "description": "Sample for DailyRollUpDataPoints", @@ -378,12 +378,12 @@ "regionTag": "health_v4beta_generated_DataPointsService_DailyRollUpDataPoints_async", "segments": [ { - "end": 51, + "end": 52, "start": 27, "type": "FULL" }, { - "end": 51, + "end": 52, "start": 27, "type": "SHORT" }, @@ -403,7 +403,7 @@ "type": "REQUEST_EXECUTION" }, { - "end": 52, + "end": 53, "start": 49, "type": "RESPONSE_HANDLING" } @@ -444,7 +444,7 @@ "type": "Sequence[Tuple[str, Union[str, bytes]]]" } ], - "resultType": "google.devicesandservices.health_v4beta.types.DailyRollUpDataPointsResponse", + "resultType": "google.devicesandservices.health_v4beta.services.data_points_service.pagers.DailyRollUpDataPointsPager", "shortName": "daily_roll_up_data_points" }, "description": "Sample for DailyRollUpDataPoints", @@ -454,12 +454,12 @@ "regionTag": "health_v4beta_generated_DataPointsService_DailyRollUpDataPoints_sync", "segments": [ { - "end": 51, + "end": 52, "start": 27, "type": "FULL" }, { - "end": 51, + "end": 52, "start": 27, "type": "SHORT" }, @@ -479,7 +479,7 @@ "type": "REQUEST_EXECUTION" }, { - "end": 52, + "end": 53, "start": 49, "type": "RESPONSE_HANDLING" } diff --git a/packages/google-devicesandservices-health/tests/unit/gapic/health_v4beta/test_data_points_service.py b/packages/google-devicesandservices-health/tests/unit/gapic/health_v4beta/test_data_points_service.py index 698b3bb1ae50..25a1326ef6ca 100644 --- a/packages/google-devicesandservices-health/tests/unit/gapic/health_v4beta/test_data_points_service.py +++ b/packages/google-devicesandservices-health/tests/unit/gapic/health_v4beta/test_data_points_service.py @@ -3953,7 +3953,9 @@ def test_daily_roll_up_data_points(request_type, transport: str = "grpc"): type(client.transport.daily_roll_up_data_points), "__call__" ) as call: # Designate an appropriate return value for the call. - call.return_value = data_points.DailyRollUpDataPointsResponse() + call.return_value = data_points.DailyRollUpDataPointsResponse( + next_page_token="next_page_token_value", + ) response = client.daily_roll_up_data_points(request) # Establish that the underlying gRPC stub method was called. @@ -3963,7 +3965,8 @@ def test_daily_roll_up_data_points(request_type, transport: str = "grpc"): assert args[0] == request # Establish that the response is the type that we expect. - assert isinstance(response, data_points.DailyRollUpDataPointsResponse) + assert isinstance(response, pagers.DailyRollUpDataPointsPager) + assert response.next_page_token == "next_page_token_value" def test_daily_roll_up_data_points_non_empty_request_with_auto_populated_field(): @@ -4109,7 +4112,9 @@ async def test_daily_roll_up_data_points_async( ) as call: # Designate an appropriate return value for the call. call.return_value = grpc_helpers_async.FakeUnaryUnaryCall( - data_points.DailyRollUpDataPointsResponse() + data_points.DailyRollUpDataPointsResponse( + next_page_token="next_page_token_value", + ) ) response = await client.daily_roll_up_data_points(request) @@ -4120,7 +4125,8 @@ async def test_daily_roll_up_data_points_async( assert args[0] == request # Establish that the response is the type that we expect. - assert isinstance(response, data_points.DailyRollUpDataPointsResponse) + assert isinstance(response, pagers.DailyRollUpDataPointsAsyncPager) + assert response.next_page_token == "next_page_token_value" def test_daily_roll_up_data_points_field_headers(): @@ -4188,6 +4194,211 @@ async def test_daily_roll_up_data_points_field_headers_async(): ) in kw["metadata"] +def test_daily_roll_up_data_points_pager(transport_name: str = "grpc"): + client = DataPointsServiceClient( + 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.daily_roll_up_data_points), "__call__" + ) as call: + # Set the response to a series of pages. + call.side_effect = ( + data_points.DailyRollUpDataPointsResponse( + rollup_data_points=[ + data_points.DailyRollupDataPoint(), + data_points.DailyRollupDataPoint(), + data_points.DailyRollupDataPoint(), + ], + next_page_token="abc", + ), + data_points.DailyRollUpDataPointsResponse( + rollup_data_points=[], + next_page_token="def", + ), + data_points.DailyRollUpDataPointsResponse( + rollup_data_points=[ + data_points.DailyRollupDataPoint(), + ], + next_page_token="ghi", + ), + data_points.DailyRollUpDataPointsResponse( + rollup_data_points=[ + data_points.DailyRollupDataPoint(), + data_points.DailyRollupDataPoint(), + ], + ), + RuntimeError, + ) + + expected_metadata = () + retry = retries.Retry() + timeout = 5 + expected_metadata = tuple(expected_metadata) + ( + gapic_v1.routing_header.to_grpc_metadata((("parent", ""),)), + ) + pager = client.daily_roll_up_data_points( + 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, data_points.DailyRollupDataPoint) for i in results) + + +def test_daily_roll_up_data_points_pages(transport_name: str = "grpc"): + client = DataPointsServiceClient( + 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.daily_roll_up_data_points), "__call__" + ) as call: + # Set the response to a series of pages. + call.side_effect = ( + data_points.DailyRollUpDataPointsResponse( + rollup_data_points=[ + data_points.DailyRollupDataPoint(), + data_points.DailyRollupDataPoint(), + data_points.DailyRollupDataPoint(), + ], + next_page_token="abc", + ), + data_points.DailyRollUpDataPointsResponse( + rollup_data_points=[], + next_page_token="def", + ), + data_points.DailyRollUpDataPointsResponse( + rollup_data_points=[ + data_points.DailyRollupDataPoint(), + ], + next_page_token="ghi", + ), + data_points.DailyRollUpDataPointsResponse( + rollup_data_points=[ + data_points.DailyRollupDataPoint(), + data_points.DailyRollupDataPoint(), + ], + ), + RuntimeError, + ) + pages = list(client.daily_roll_up_data_points(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_daily_roll_up_data_points_async_pager(): + client = DataPointsServiceAsyncClient( + credentials=async_anonymous_credentials(), + ) + + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.daily_roll_up_data_points), + "__call__", + new_callable=mock.AsyncMock, + ) as call: + # Set the response to a series of pages. + call.side_effect = ( + data_points.DailyRollUpDataPointsResponse( + rollup_data_points=[ + data_points.DailyRollupDataPoint(), + data_points.DailyRollupDataPoint(), + data_points.DailyRollupDataPoint(), + ], + next_page_token="abc", + ), + data_points.DailyRollUpDataPointsResponse( + rollup_data_points=[], + next_page_token="def", + ), + data_points.DailyRollUpDataPointsResponse( + rollup_data_points=[ + data_points.DailyRollupDataPoint(), + ], + next_page_token="ghi", + ), + data_points.DailyRollUpDataPointsResponse( + rollup_data_points=[ + data_points.DailyRollupDataPoint(), + data_points.DailyRollupDataPoint(), + ], + ), + RuntimeError, + ) + async_pager = await client.daily_roll_up_data_points( + 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, data_points.DailyRollupDataPoint) for i in responses) + + +@pytest.mark.asyncio +async def test_daily_roll_up_data_points_async_pages(): + client = DataPointsServiceAsyncClient( + credentials=async_anonymous_credentials(), + ) + + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.daily_roll_up_data_points), + "__call__", + new_callable=mock.AsyncMock, + ) as call: + # Set the response to a series of pages. + call.side_effect = ( + data_points.DailyRollUpDataPointsResponse( + rollup_data_points=[ + data_points.DailyRollupDataPoint(), + data_points.DailyRollupDataPoint(), + data_points.DailyRollupDataPoint(), + ], + next_page_token="abc", + ), + data_points.DailyRollUpDataPointsResponse( + rollup_data_points=[], + next_page_token="def", + ), + data_points.DailyRollUpDataPointsResponse( + rollup_data_points=[ + data_points.DailyRollupDataPoint(), + ], + next_page_token="ghi", + ), + data_points.DailyRollUpDataPointsResponse( + rollup_data_points=[ + data_points.DailyRollupDataPoint(), + data_points.DailyRollupDataPoint(), + ], + ), + RuntimeError, + ) + pages = [] + async for page_ in (await client.daily_roll_up_data_points(request={})).pages: + pages.append(page_) + for page_, token in zip(pages, ["abc", "def", "ghi", ""]): + assert page_.raw_page.next_page_token == token + + @pytest.mark.parametrize( "request_type", [ @@ -5920,6 +6131,72 @@ def test_daily_roll_up_data_points_rest_required_fields( assert sorted(expected_params) == sorted(actual_params) +def test_daily_roll_up_data_points_rest_pager(transport: str = "rest"): + client = DataPointsServiceClient( + 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 = ( + data_points.DailyRollUpDataPointsResponse( + rollup_data_points=[ + data_points.DailyRollupDataPoint(), + data_points.DailyRollupDataPoint(), + data_points.DailyRollupDataPoint(), + ], + next_page_token="abc", + ), + data_points.DailyRollUpDataPointsResponse( + rollup_data_points=[], + next_page_token="def", + ), + data_points.DailyRollUpDataPointsResponse( + rollup_data_points=[ + data_points.DailyRollupDataPoint(), + ], + next_page_token="ghi", + ), + data_points.DailyRollUpDataPointsResponse( + rollup_data_points=[ + data_points.DailyRollupDataPoint(), + data_points.DailyRollupDataPoint(), + ], + ), + ) + # Two responses for two calls + response = response + response + + # Wrap the values into proper Response objs + response = tuple( + data_points.DailyRollUpDataPointsResponse.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": "users/sample1/dataTypes/sample2"} + + pager = client.daily_roll_up_data_points(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, data_points.DailyRollupDataPoint) for i in results) + + pages = list(client.daily_roll_up_data_points(request=sample_request).pages) + for page_, token in zip(pages, ["abc", "def", "ghi", ""]): + assert page_.raw_page.next_page_token == token + + def test_export_exercise_tcx_rest_use_cached_wrapped_rpc(): # Clients should use _prep_wrapped_messages to create cached wrapped rpcs, # instead of constructing them on each call @@ -6611,7 +6888,9 @@ async def test_daily_roll_up_data_points_empty_call_grpc_asyncio(): ) as call: # Designate an appropriate return value for the call. call.return_value = grpc_helpers_async.FakeUnaryUnaryCall( - data_points.DailyRollUpDataPointsResponse() + data_points.DailyRollUpDataPointsResponse( + next_page_token="next_page_token_value", + ) ) await client.daily_roll_up_data_points(request=None) @@ -7288,12 +7567,6 @@ def test_create_data_point_rest_call_success(request_type): "ovulation_test": {"sample_time": {}, "result": 1}, "symptoms": {"sample_time": {}, "symptoms": [1]}, "moods": {"sample_time": {}, "moods": [1], "valences": [1]}, - "skin_temperature": { - "sample_time": {}, - "temperature_celsius": 0.2053, - "baseline_temperature_celsius": 0.2983, - "metadata": {"measurement_location": 1, "measurement_state": 1}, - }, "skin_temperature_sensors": { "sample_time": {}, "sensor_data": [ @@ -7849,12 +8122,6 @@ def test_update_data_point_rest_call_success(request_type): "ovulation_test": {"sample_time": {}, "result": 1}, "symptoms": {"sample_time": {}, "symptoms": [1]}, "moods": {"sample_time": {}, "moods": [1], "valences": [1]}, - "skin_temperature": { - "sample_time": {}, - "temperature_celsius": 0.2053, - "baseline_temperature_celsius": 0.2983, - "metadata": {"measurement_location": 1, "measurement_state": 1}, - }, "skin_temperature_sensors": { "sample_time": {}, "sensor_data": [ @@ -8480,7 +8747,9 @@ def test_daily_roll_up_data_points_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 = data_points.DailyRollUpDataPointsResponse() + return_value = data_points.DailyRollUpDataPointsResponse( + next_page_token="next_page_token_value", + ) # Wrap the value into a proper Response obj response_value = mock.Mock() @@ -8495,7 +8764,8 @@ def test_daily_roll_up_data_points_rest_call_success(request_type): response = client.daily_roll_up_data_points(request) # Establish that the response is the type that we expect. - assert isinstance(response, data_points.DailyRollUpDataPointsResponse) + assert isinstance(response, pagers.DailyRollUpDataPointsPager) + assert response.next_page_token == "next_page_token_value" @pytest.mark.parametrize("null_interceptor", [True, False]) diff --git a/packages/googleapis-common-protos/google/api/field_behavior.proto b/packages/googleapis-common-protos/google/api/field_behavior.proto index 861f8254fb59..51f4c7d447ca 100644 --- a/packages/googleapis-common-protos/google/api/field_behavior.proto +++ b/packages/googleapis-common-protos/google/api/field_behavior.proto @@ -37,7 +37,7 @@ extend google.protobuf.FieldOptions { // google.protobuf.Timestamp expire_time = 1 // [(google.api.field_behavior) = OUTPUT_ONLY, // (google.api.field_behavior) = IMMUTABLE]; - repeated google.api.FieldBehavior field_behavior = 1052 [packed = false]; + repeated google.api.FieldBehavior field_behavior = 1052; } // An indicator of the behavior of a given field (for example, that a field diff --git a/packages/googleapis-common-protos/google/api/field_behavior_pb2.py b/packages/googleapis-common-protos/google/api/field_behavior_pb2.py index 2afc7b7e1ab4..6475d173b854 100644 --- a/packages/googleapis-common-protos/google/api/field_behavior_pb2.py +++ b/packages/googleapis-common-protos/google/api/field_behavior_pb2.py @@ -37,7 +37,7 @@ from google.protobuf import descriptor_pb2 as google_dot_protobuf_dot_descriptor__pb2 DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile( - b"\n\x1fgoogle/api/field_behavior.proto\x12\ngoogle.api\x1a google/protobuf/descriptor.proto*\xb6\x01\n\rFieldBehavior\x12\x1e\n\x1a\x46IELD_BEHAVIOR_UNSPECIFIED\x10\x00\x12\x0c\n\x08OPTIONAL\x10\x01\x12\x0c\n\x08REQUIRED\x10\x02\x12\x0f\n\x0bOUTPUT_ONLY\x10\x03\x12\x0e\n\nINPUT_ONLY\x10\x04\x12\r\n\tIMMUTABLE\x10\x05\x12\x12\n\x0eUNORDERED_LIST\x10\x06\x12\x15\n\x11NON_EMPTY_DEFAULT\x10\x07\x12\x0e\n\nIDENTIFIER\x10\x08:U\n\x0e\x66ield_behavior\x12\x1d.google.protobuf.FieldOptions\x18\x9c\x08 \x03(\x0e\x32\x19.google.api.FieldBehaviorB\x02\x10\x00\x42p\n\x0e\x63om.google.apiB\x12\x46ieldBehaviorProtoP\x01ZAgoogle.golang.org/genproto/googleapis/api/annotations;annotations\xa2\x02\x04GAPIb\x06proto3" + b"\n\x1fgoogle/api/field_behavior.proto\x12\ngoogle.api\x1a google/protobuf/descriptor.proto*\xb6\x01\n\rFieldBehavior\x12\x1e\n\x1a\x46IELD_BEHAVIOR_UNSPECIFIED\x10\x00\x12\x0c\n\x08OPTIONAL\x10\x01\x12\x0c\n\x08REQUIRED\x10\x02\x12\x0f\n\x0bOUTPUT_ONLY\x10\x03\x12\x0e\n\nINPUT_ONLY\x10\x04\x12\r\n\tIMMUTABLE\x10\x05\x12\x12\n\x0eUNORDERED_LIST\x10\x06\x12\x15\n\x11NON_EMPTY_DEFAULT\x10\x07\x12\x0e\n\nIDENTIFIER\x10\x08:Q\n\x0e\x66ield_behavior\x12\x1d.google.protobuf.FieldOptions\x18\x9c\x08 \x03(\x0e\x32\x19.google.api.FieldBehaviorBp\n\x0e\x63om.google.apiB\x12\x46ieldBehaviorProtoP\x01ZAgoogle.golang.org/genproto/googleapis/api/annotations;annotations\xa2\x02\x04GAPIb\x06proto3" ) _globals = globals() @@ -50,8 +50,6 @@ _globals[ "DESCRIPTOR" ]._serialized_options = b"\n\016com.google.apiB\022FieldBehaviorProtoP\001ZAgoogle.golang.org/genproto/googleapis/api/annotations;annotations\242\002\004GAPI" - _globals["field_behavior"]._loaded_options = None - _globals["field_behavior"]._serialized_options = b"\020\000" _globals["_FIELDBEHAVIOR"]._serialized_start = 82 _globals["_FIELDBEHAVIOR"]._serialized_end = 264 # @@protoc_insertion_point(module_scope) diff --git a/packages/grpc-google-iam-v1/google/iam/v1/iam_policy_pb2.py b/packages/grpc-google-iam-v1/google/iam/v1/iam_policy_pb2.py index ab87aff0ebc7..a92b263fee89 100644 --- a/packages/grpc-google-iam-v1/google/iam/v1/iam_policy_pb2.py +++ b/packages/grpc-google-iam-v1/google/iam/v1/iam_policy_pb2.py @@ -44,7 +44,7 @@ from google.iam.v1 import policy_pb2 as google_dot_iam_dot_v1_dot_policy__pb2 DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile( - b'\n\x1egoogle/iam/v1/iam_policy.proto\x12\rgoogle.iam.v1\x1a\x1cgoogle/api/annotations.proto\x1a\x17google/api/client.proto\x1a\x1fgoogle/api/field_behavior.proto\x1a\x19google/api/resource.proto\x1a\x1bgoogle/iam/v1/options.proto\x1a\x1agoogle/iam/v1/policy.proto\x1a google/protobuf/field_mask.proto"\x8f\x01\n\x13SetIamPolicyRequest\x12\x1b\n\x08resource\x18\x01 \x01(\tB\t\xe0\x41\x02\xfa\x41\x03\n\x01*\x12*\n\x06policy\x18\x02 \x01(\x0b\x32\x15.google.iam.v1.PolicyB\x03\xe0\x41\x02\x12/\n\x0bupdate_mask\x18\x03 \x01(\x0b\x32\x1a.google.protobuf.FieldMask"d\n\x13GetIamPolicyRequest\x12\x1b\n\x08resource\x18\x01 \x01(\tB\t\xe0\x41\x02\xfa\x41\x03\n\x01*\x12\x30\n\x07options\x18\x02 \x01(\x0b\x32\x1f.google.iam.v1.GetPolicyOptions"R\n\x19TestIamPermissionsRequest\x12\x1b\n\x08resource\x18\x01 \x01(\tB\t\xe0\x41\x02\xfa\x41\x03\n\x01*\x12\x18\n\x0bpermissions\x18\x02 \x03(\tB\x03\xe0\x41\x02"1\n\x1aTestIamPermissionsResponse\x12\x13\n\x0bpermissions\x18\x01 \x03(\t2\xb4\x03\n\tIAMPolicy\x12t\n\x0cSetIamPolicy\x12".google.iam.v1.SetIamPolicyRequest\x1a\x15.google.iam.v1.Policy")\x82\xd3\xe4\x93\x02#"\x1e/v1/{resource=**}:setIamPolicy:\x01*\x12t\n\x0cGetIamPolicy\x12".google.iam.v1.GetIamPolicyRequest\x1a\x15.google.iam.v1.Policy")\x82\xd3\xe4\x93\x02#"\x1e/v1/{resource=**}:getIamPolicy:\x01*\x12\x9a\x01\n\x12TestIamPermissions\x12(.google.iam.v1.TestIamPermissionsRequest\x1a).google.iam.v1.TestIamPermissionsResponse"/\x82\xd3\xe4\x93\x02)"$/v1/{resource=**}:testIamPermissions:\x01*\x1a\x1e\xca\x41\x1biam-meta-api.googleapis.comB|\n\x11\x63om.google.iam.v1B\x0eIamPolicyProtoP\x01Z)cloud.google.com/go/iam/apiv1/iampb;iampb\xaa\x02\x13Google.Cloud.Iam.V1\xca\x02\x13Google\\Cloud\\Iam\\V1b\x06proto3' + b'\n\x1egoogle/iam/v1/iam_policy.proto\x12\rgoogle.iam.v1\x1a\x1cgoogle/api/annotations.proto\x1a\x17google/api/client.proto\x1a\x1fgoogle/api/field_behavior.proto\x1a\x19google/api/resource.proto\x1a\x1bgoogle/iam/v1/options.proto\x1a\x1agoogle/iam/v1/policy.proto\x1a google/protobuf/field_mask.proto"\x91\x01\n\x13SetIamPolicyRequest\x12\x1c\n\x08resource\x18\x01 \x01(\tB\n\xe2\x41\x01\x02\xfa\x41\x03\n\x01*\x12+\n\x06policy\x18\x02 \x01(\x0b\x32\x15.google.iam.v1.PolicyB\x04\xe2\x41\x01\x02\x12/\n\x0bupdate_mask\x18\x03 \x01(\x0b\x32\x1a.google.protobuf.FieldMask"e\n\x13GetIamPolicyRequest\x12\x1c\n\x08resource\x18\x01 \x01(\tB\n\xe2\x41\x01\x02\xfa\x41\x03\n\x01*\x12\x30\n\x07options\x18\x02 \x01(\x0b\x32\x1f.google.iam.v1.GetPolicyOptions"T\n\x19TestIamPermissionsRequest\x12\x1c\n\x08resource\x18\x01 \x01(\tB\n\xe2\x41\x01\x02\xfa\x41\x03\n\x01*\x12\x19\n\x0bpermissions\x18\x02 \x03(\tB\x04\xe2\x41\x01\x02"1\n\x1aTestIamPermissionsResponse\x12\x13\n\x0bpermissions\x18\x01 \x03(\t2\xb4\x03\n\tIAMPolicy\x12t\n\x0cSetIamPolicy\x12".google.iam.v1.SetIamPolicyRequest\x1a\x15.google.iam.v1.Policy")\x82\xd3\xe4\x93\x02#"\x1e/v1/{resource=**}:setIamPolicy:\x01*\x12t\n\x0cGetIamPolicy\x12".google.iam.v1.GetIamPolicyRequest\x1a\x15.google.iam.v1.Policy")\x82\xd3\xe4\x93\x02#"\x1e/v1/{resource=**}:getIamPolicy:\x01*\x12\x9a\x01\n\x12TestIamPermissions\x12(.google.iam.v1.TestIamPermissionsRequest\x1a).google.iam.v1.TestIamPermissionsResponse"/\x82\xd3\xe4\x93\x02)"$/v1/{resource=**}:testIamPermissions:\x01*\x1a\x1e\xca\x41\x1biam-meta-api.googleapis.comB|\n\x11\x63om.google.iam.v1B\x0eIamPolicyProtoP\x01Z)cloud.google.com/go/iam/apiv1/iampb;iampb\xaa\x02\x13Google.Cloud.Iam.V1\xca\x02\x13Google\\Cloud\\Iam\\V1b\x06proto3' ) _globals = globals() @@ -60,27 +60,27 @@ _globals["_SETIAMPOLICYREQUEST"].fields_by_name["resource"]._loaded_options = None _globals["_SETIAMPOLICYREQUEST"].fields_by_name[ "resource" - ]._serialized_options = b"\340A\002\372A\003\n\001*" + ]._serialized_options = b"\342A\001\002\372A\003\n\001*" _globals["_SETIAMPOLICYREQUEST"].fields_by_name["policy"]._loaded_options = None _globals["_SETIAMPOLICYREQUEST"].fields_by_name[ "policy" - ]._serialized_options = b"\340A\002" + ]._serialized_options = b"\342A\001\002" _globals["_GETIAMPOLICYREQUEST"].fields_by_name["resource"]._loaded_options = None _globals["_GETIAMPOLICYREQUEST"].fields_by_name[ "resource" - ]._serialized_options = b"\340A\002\372A\003\n\001*" + ]._serialized_options = b"\342A\001\002\372A\003\n\001*" _globals["_TESTIAMPERMISSIONSREQUEST"].fields_by_name[ "resource" ]._loaded_options = None _globals["_TESTIAMPERMISSIONSREQUEST"].fields_by_name[ "resource" - ]._serialized_options = b"\340A\002\372A\003\n\001*" + ]._serialized_options = b"\342A\001\002\372A\003\n\001*" _globals["_TESTIAMPERMISSIONSREQUEST"].fields_by_name[ "permissions" ]._loaded_options = None _globals["_TESTIAMPERMISSIONSREQUEST"].fields_by_name[ "permissions" - ]._serialized_options = b"\340A\002" + ]._serialized_options = b"\342A\001\002" _globals["_IAMPOLICY"]._loaded_options = None _globals["_IAMPOLICY"]._serialized_options = b"\312A\033iam-meta-api.googleapis.com" _globals["_IAMPOLICY"].methods_by_name["SetIamPolicy"]._loaded_options = None @@ -102,13 +102,13 @@ b'\202\323\344\223\002)"$/v1/{resource=**}:testIamPermissions:\001*' ) _globals["_SETIAMPOLICYREQUEST"]._serialized_start = 256 - _globals["_SETIAMPOLICYREQUEST"]._serialized_end = 399 - _globals["_GETIAMPOLICYREQUEST"]._serialized_start = 401 - _globals["_GETIAMPOLICYREQUEST"]._serialized_end = 501 - _globals["_TESTIAMPERMISSIONSREQUEST"]._serialized_start = 503 - _globals["_TESTIAMPERMISSIONSREQUEST"]._serialized_end = 585 - _globals["_TESTIAMPERMISSIONSRESPONSE"]._serialized_start = 587 - _globals["_TESTIAMPERMISSIONSRESPONSE"]._serialized_end = 636 - _globals["_IAMPOLICY"]._serialized_start = 639 - _globals["_IAMPOLICY"]._serialized_end = 1075 + _globals["_SETIAMPOLICYREQUEST"]._serialized_end = 401 + _globals["_GETIAMPOLICYREQUEST"]._serialized_start = 403 + _globals["_GETIAMPOLICYREQUEST"]._serialized_end = 504 + _globals["_TESTIAMPERMISSIONSREQUEST"]._serialized_start = 506 + _globals["_TESTIAMPERMISSIONSREQUEST"]._serialized_end = 590 + _globals["_TESTIAMPERMISSIONSRESPONSE"]._serialized_start = 592 + _globals["_TESTIAMPERMISSIONSRESPONSE"]._serialized_end = 641 + _globals["_IAMPOLICY"]._serialized_start = 644 + _globals["_IAMPOLICY"]._serialized_end = 1080 # @@protoc_insertion_point(module_scope) diff --git a/packages/grpc-google-iam-v1/google/iam/v1/resource_policy_member_pb2.py b/packages/grpc-google-iam-v1/google/iam/v1/resource_policy_member_pb2.py index a4334a0236f7..0c07bd6e851d 100644 --- a/packages/grpc-google-iam-v1/google/iam/v1/resource_policy_member_pb2.py +++ b/packages/grpc-google-iam-v1/google/iam/v1/resource_policy_member_pb2.py @@ -42,7 +42,7 @@ from google.api import field_behavior_pb2 as google_dot_api_dot_field__behavior__pb2 DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile( - b'\n*google/iam/v1/resource_policy_member.proto\x12\rgoogle.iam.v1\x1a\x1fgoogle/api/field_behavior.proto"e\n\x14ResourcePolicyMember\x12&\n\x19iam_policy_name_principal\x18\x01 \x01(\tB\x03\xe0\x41\x03\x12%\n\x18iam_policy_uid_principal\x18\x02 \x01(\tB\x03\xe0\x41\x03\x42\x87\x01\n\x11\x63om.google.iam.v1B\x19ResourcePolicyMemberProtoP\x01Z)cloud.google.com/go/iam/apiv1/iampb;iampb\xaa\x02\x13Google.Cloud.Iam.V1\xca\x02\x13Google\\Cloud\\Iam\\V1b\x06proto3' + b"\n*google/iam/v1/resource_policy_member.proto\x12\rgoogle.iam.v1\x1a\x1fgoogle/api/field_behavior.proto\"g\n\x14ResourcePolicyMember\x12'\n\x19iam_policy_name_principal\x18\x01 \x01(\tB\x04\xe2\x41\x01\x03\x12&\n\x18iam_policy_uid_principal\x18\x02 \x01(\tB\x04\xe2\x41\x01\x03\x42\x87\x01\n\x11\x63om.google.iam.v1B\x19ResourcePolicyMemberProtoP\x01Z)cloud.google.com/go/iam/apiv1/iampb;iampb\xaa\x02\x13Google.Cloud.Iam.V1\xca\x02\x13Google\\Cloud\\Iam\\V1b\x06proto3" ) _globals = globals() @@ -60,13 +60,13 @@ ]._loaded_options = None _globals["_RESOURCEPOLICYMEMBER"].fields_by_name[ "iam_policy_name_principal" - ]._serialized_options = b"\340A\003" + ]._serialized_options = b"\342A\001\003" _globals["_RESOURCEPOLICYMEMBER"].fields_by_name[ "iam_policy_uid_principal" ]._loaded_options = None _globals["_RESOURCEPOLICYMEMBER"].fields_by_name[ "iam_policy_uid_principal" - ]._serialized_options = b"\340A\003" + ]._serialized_options = b"\342A\001\003" _globals["_RESOURCEPOLICYMEMBER"]._serialized_start = 94 - _globals["_RESOURCEPOLICYMEMBER"]._serialized_end = 195 + _globals["_RESOURCEPOLICYMEMBER"]._serialized_end = 197 # @@protoc_insertion_point(module_scope)