yandexcloud 0.287.0__py3-none-any.whl → 0.289.0__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- yandex/cloud/access/access_pb2.pyi +288 -0
- yandex/cloud/ai/foundation_models/v1/embedding/embedding_service_pb2.pyi +63 -0
- yandex/cloud/ai/foundation_models/v1/image_generation/image_generation_pb2.pyi +53 -0
- yandex/cloud/ai/foundation_models/v1/image_generation/image_generation_service_pb2.pyi +67 -0
- yandex/cloud/ai/foundation_models/v1/text_classification/text_classification_pb2.pyi +55 -0
- yandex/cloud/ai/foundation_models/v1/text_classification/text_classification_service_pb2.pyi +122 -0
- yandex/cloud/ai/foundation_models/v1/text_common_pb2.pyi +195 -0
- yandex/cloud/ai/foundation_models/v1/text_generation/text_generation_service_pb2.pyi +122 -0
- yandex/cloud/ai/llm/v1alpha/llm_pb2.pyi +121 -0
- yandex/cloud/ai/llm/v1alpha/llm_service_pb2.pyi +280 -0
- yandex/cloud/ai/ocr/v1/ocr_pb2.pyi +364 -0
- yandex/cloud/ai/ocr/v1/ocr_service_pb2.pyi +92 -0
- yandex/cloud/ai/stt/v2/stt_service_pb2.pyi +299 -0
- yandex/cloud/ai/stt/v3/stt_pb2.pyi +1437 -0
- yandex/cloud/ai/stt/v3/stt_service_pb2.pyi +26 -0
- yandex/cloud/ai/translate/v2/translation_pb2.pyi +55 -0
- yandex/cloud/ai/translate/v2/translation_service_pb2.pyi +272 -0
- yandex/cloud/ai/tts/v3/tts_pb2.pyi +474 -0
- yandex/cloud/ai/tts/v3/tts_service_pb2.pyi +8 -0
- yandex/cloud/ai/vision/v1/classification_pb2.pyi +55 -0
- yandex/cloud/ai/vision/v1/face_detection_pb2.pyi +51 -0
- yandex/cloud/ai/vision/v1/image_copy_search_pb2.pyi +63 -0
- yandex/cloud/ai/vision/v1/primitives_pb2.pyi +51 -0
- yandex/cloud/ai/vision/v1/text_detection_pb2.pyi +196 -0
- yandex/cloud/ai/vision/v1/vision_service_pb2.pyi +284 -0
- yandex/cloud/ai/vision/v2/image_classifier_pb2.pyi +159 -0
- yandex/cloud/ai/vision/v2/image_classifier_service_pb2.pyi +8 -0
- yandex/cloud/ai/vision/v2/image_pb2.pyi +57 -0
- yandex/cloud/api/operation_pb2.pyi +47 -0
- yandex/cloud/apploadbalancer/v1/backend_group_pb2.pyi +944 -0
- yandex/cloud/apploadbalancer/v1/backend_group_service_pb2.pyi +558 -0
- yandex/cloud/apploadbalancer/v1/http_router_pb2.pyi +92 -0
- yandex/cloud/apploadbalancer/v1/http_router_service_pb2.pyi +389 -0
- yandex/cloud/apploadbalancer/v1/load_balancer_pb2.pyi +837 -0
- yandex/cloud/apploadbalancer/v1/load_balancer_service_pb2.pyi +1073 -0
- yandex/cloud/apploadbalancer/v1/logging_pb2.pyi +117 -0
- yandex/cloud/apploadbalancer/v1/payload_pb2.pyi +31 -0
- yandex/cloud/apploadbalancer/v1/target_group_pb2.pyi +117 -0
- yandex/cloud/apploadbalancer/v1/target_group_service_pb2.pyi +450 -0
- yandex/cloud/apploadbalancer/v1/tls_pb2.pyi +34 -0
- yandex/cloud/apploadbalancer/v1/virtual_host_pb2.pyi +798 -0
- yandex/cloud/apploadbalancer/v1/virtual_host_service_pb2.pyi +501 -0
- yandex/cloud/audittrails/v1/trail_pb2.pyi +449 -0
- yandex/cloud/audittrails/v1/trail_service_pb2.pyi +363 -0
- yandex/cloud/backup/v1/backup_pb2.pyi +468 -0
- yandex/cloud/backup/v1/backup_service_pb2.pyi +454 -0
- yandex/cloud/backup/v1/policy_pb2.pyi +742 -0
- yandex/cloud/backup/v1/policy_service_pb2.py +8 -8
- yandex/cloud/backup/v1/policy_service_pb2.pyi +342 -0
- yandex/cloud/backup/v1/provider_service_pb2.pyi +90 -0
- yandex/cloud/backup/v1/resource_pb2.pyi +273 -0
- yandex/cloud/backup/v1/resource_service_pb2.pyi +357 -0
- yandex/cloud/billing/v1/billable_object_pb2.pyi +65 -0
- yandex/cloud/billing/v1/billing_account_pb2.pyi +62 -0
- yandex/cloud/billing/v1/billing_account_service_pb2.pyi +190 -0
- yandex/cloud/billing/v1/budget_pb2.pyi +409 -0
- yandex/cloud/billing/v1/budget_service_pb2.pyi +151 -0
- yandex/cloud/billing/v1/customer_pb2.pyi +79 -0
- yandex/cloud/billing/v1/customer_service_pb2.pyi +187 -0
- yandex/cloud/billing/v1/service_pb2.pyi +37 -0
- yandex/cloud/billing/v1/service_service_pb2.pyi +96 -0
- yandex/cloud/billing/v1/sku_pb2.pyi +173 -0
- yandex/cloud/billing/v1/sku_service_pb2.pyi +128 -0
- yandex/cloud/cdn/v1/cache_service_pb2.pyi +95 -0
- yandex/cloud/cdn/v1/origin_group_pb2.pyi +54 -0
- yandex/cloud/cdn/v1/origin_group_service_pb2.pyi +252 -0
- yandex/cloud/cdn/v1/origin_pb2.pyi +186 -0
- yandex/cloud/cdn/v1/origin_service_pb2.pyi +262 -0
- yandex/cloud/cdn/v1/provider_service_pb2.pyi +86 -0
- yandex/cloud/cdn/v1/raw_logs_pb2.pyi +80 -0
- yandex/cloud/cdn/v1/raw_logs_service_pb2.pyi +207 -0
- yandex/cloud/cdn/v1/resource_pb2.pyi +1067 -0
- yandex/cloud/cdn/v1/resource_service_pb2.pyi +401 -0
- yandex/cloud/cdn/v1/rule_pb2.pyi +45 -0
- yandex/cloud/cdn/v1/rule_service_pb2.pyi +211 -0
- yandex/cloud/certificatemanager/v1/certificate_content_service_pb2.pyi +87 -0
- yandex/cloud/certificatemanager/v1/certificate_pb2.pyi +381 -0
- yandex/cloud/certificatemanager/v1/certificate_service_pb2.pyi +515 -0
- yandex/cloud/compute/v1/disk_pb2.pyi +202 -0
- yandex/cloud/compute/v1/disk_placement_group_pb2.pyi +143 -0
- yandex/cloud/compute/v1/disk_placement_group_service_pb2.pyi +425 -0
- yandex/cloud/compute/v1/disk_service_pb2.pyi +561 -0
- yandex/cloud/compute/v1/disk_type_pb2.pyi +39 -0
- yandex/cloud/compute/v1/disk_type_service_pb2.pyi +86 -0
- yandex/cloud/compute/v1/filesystem_pb2.pyi +137 -0
- yandex/cloud/compute/v1/filesystem_service_pb2.pyi +394 -0
- yandex/cloud/compute/v1/gpu_cluster_pb2.pyi +139 -0
- yandex/cloud/compute/v1/gpu_cluster_service_pb2.pyi +439 -0
- yandex/cloud/compute/v1/host_group_pb2.pyi +224 -0
- yandex/cloud/compute/v1/host_group_service_pb2.pyi +556 -0
- yandex/cloud/compute/v1/host_type_pb2.pyi +48 -0
- yandex/cloud/compute/v1/host_type_service_pb2.pyi +87 -0
- yandex/cloud/compute/v1/image_pb2.pyi +188 -0
- yandex/cloud/compute/v1/image_service_pb2.pyi +430 -0
- yandex/cloud/compute/v1/instance_pb2.pyi +798 -0
- yandex/cloud/compute/v1/instance_service_pb2.pyi +1806 -0
- yandex/cloud/compute/v1/instancegroup/instance_group_pb2.pyi +2064 -0
- yandex/cloud/compute/v1/instancegroup/instance_group_service_pb2.pyi +1004 -0
- yandex/cloud/compute/v1/maintenance_pb2.pyi +38 -0
- yandex/cloud/compute/v1/placement_group_pb2.pyi +115 -0
- yandex/cloud/compute/v1/placement_group_service_pb2.pyi +423 -0
- yandex/cloud/compute/v1/snapshot_pb2.pyi +139 -0
- yandex/cloud/compute/v1/snapshot_schedule_pb2.pyi +221 -0
- yandex/cloud/compute/v1/snapshot_schedule_service_pb2.pyi +678 -0
- yandex/cloud/compute/v1/snapshot_service_pb2.pyi +350 -0
- yandex/cloud/compute/v1/zone_pb2.pyi +63 -0
- yandex/cloud/compute/v1/zone_service_pb2.pyi +84 -0
- yandex/cloud/containerregistry/v1/blob_pb2.pyi +45 -0
- yandex/cloud/containerregistry/v1/image_pb2.pyi +75 -0
- yandex/cloud/containerregistry/v1/image_service_pb2.pyi +160 -0
- yandex/cloud/containerregistry/v1/ip_permission_pb2.pyi +95 -0
- yandex/cloud/containerregistry/v1/lifecycle_policy_pb2.pyi +131 -0
- yandex/cloud/containerregistry/v1/lifecycle_policy_service_pb2.pyi +479 -0
- yandex/cloud/containerregistry/v1/registry_pb2.pyi +103 -0
- yandex/cloud/containerregistry/v1/registry_service_pb2.pyi +386 -0
- yandex/cloud/containerregistry/v1/repository_pb2.pyi +35 -0
- yandex/cloud/containerregistry/v1/repository_service_pb2.pyi +202 -0
- yandex/cloud/containerregistry/v1/scan_policy_pb2.pyi +140 -0
- yandex/cloud/containerregistry/v1/scan_policy_service_pb2.pyi +177 -0
- yandex/cloud/containerregistry/v1/scanner_pb2.pyi +254 -0
- yandex/cloud/containerregistry/v1/scanner_service_pb2.pyi +234 -0
- yandex/cloud/dataproc/manager/v1/job_pb2.pyi +608 -0
- yandex/cloud/dataproc/manager/v1/job_service_pb2.pyi +201 -0
- yandex/cloud/dataproc/manager/v1/manager_service_pb2.pyi +449 -0
- yandex/cloud/dataproc/v1/cluster_pb2.pyi +351 -0
- yandex/cloud/dataproc/v1/cluster_service_pb2.pyi +764 -0
- yandex/cloud/dataproc/v1/common_pb2.pyi +75 -0
- yandex/cloud/dataproc/v1/job_pb2.pyi +526 -0
- yandex/cloud/dataproc/v1/job_service_pb2.pyi +250 -0
- yandex/cloud/dataproc/v1/resource_preset_pb2.pyi +45 -0
- yandex/cloud/dataproc/v1/resource_preset_service_pb2.pyi +83 -0
- yandex/cloud/dataproc/v1/subcluster_pb2.pyi +248 -0
- yandex/cloud/dataproc/v1/subcluster_service_pb2.pyi +301 -0
- yandex/cloud/datasphere/v1/app_token_service_pb2.pyi +27 -0
- yandex/cloud/datasphere/v1/folder_budget_service_pb2.pyi +101 -0
- yandex/cloud/datasphere/v1/node_execution_error_details_pb2.pyi +41 -0
- yandex/cloud/datasphere/v1/node_service_pb2.pyi +104 -0
- yandex/cloud/datasphere/v1/project_data_service_pb2.pyi +122 -0
- yandex/cloud/datasphere/v1/project_pb2.pyi +149 -0
- yandex/cloud/datasphere/v1/project_service_pb2.pyi +606 -0
- yandex/cloud/datasphere/v2/community_pb2.pyi +75 -0
- yandex/cloud/datasphere/v2/community_service_pb2.pyi +384 -0
- yandex/cloud/datasphere/v2/dataset_pb2.pyi +159 -0
- yandex/cloud/datasphere/v2/dataset_service_pb2.pyi +47 -0
- yandex/cloud/datasphere/v2/docker_image_service_pb2.pyi +29 -0
- yandex/cloud/datasphere/v2/jobs/jobs_pb2.pyi +484 -0
- yandex/cloud/datasphere/v2/jobs/project_job_service_pb2.pyi +694 -0
- yandex/cloud/datasphere/v2/project_pb2.pyi +265 -0
- yandex/cloud/datasphere/v2/project_service_pb2.pyi +815 -0
- yandex/cloud/datasphere/v2/resource_types_pb2.pyi +46 -0
- yandex/cloud/datasphere/v2/restrictions_pb2.pyi +127 -0
- yandex/cloud/datasphere/v2/s3_service_pb2.pyi +47 -0
- yandex/cloud/datasphere/v2/secret_pb2.pyi +102 -0
- yandex/cloud/datasphere/v2/user_pb2.pyi +43 -0
- yandex/cloud/datatransfer/v1/endpoint/clickhouse_pb2.pyi +295 -0
- yandex/cloud/datatransfer/v1/endpoint/common_pb2.pyi +324 -0
- yandex/cloud/datatransfer/v1/endpoint/kafka_pb2.pyi +294 -0
- yandex/cloud/datatransfer/v1/endpoint/metrika_pb2.pyi +84 -0
- yandex/cloud/datatransfer/v1/endpoint/mongo_pb2.pyi +191 -0
- yandex/cloud/datatransfer/v1/endpoint/mysql_pb2.pyi +261 -0
- yandex/cloud/datatransfer/v1/endpoint/parsers_pb2.pyi +91 -0
- yandex/cloud/datatransfer/v1/endpoint/postgres_pb2.pyi +326 -0
- yandex/cloud/datatransfer/v1/endpoint/serializers_pb2.pyi +105 -0
- yandex/cloud/datatransfer/v1/endpoint/ydb_pb2.pyi +154 -0
- yandex/cloud/datatransfer/v1/endpoint/yds_pb2.pyi +155 -0
- yandex/cloud/datatransfer/v1/endpoint_pb2.pyi +144 -0
- yandex/cloud/datatransfer/v1/endpoint_service_pb2.pyi +262 -0
- yandex/cloud/datatransfer/v1/transfer_pb2.pyi +689 -0
- yandex/cloud/datatransfer/v1/transfer_service_pb2.pyi +338 -0
- yandex/cloud/dns/v1/dns_zone_pb2.pyi +163 -0
- yandex/cloud/dns/v1/dns_zone_service_pb2.pyi +655 -0
- yandex/cloud/endpoint/api_endpoint_pb2.pyi +29 -0
- yandex/cloud/endpoint/api_endpoint_service_pb2.pyi +66 -0
- yandex/cloud/iam/v1/api_key_pb2.pyi +61 -0
- yandex/cloud/iam/v1/api_key_service_pb2.pyi +293 -0
- yandex/cloud/iam/v1/awscompatibility/access_key_pb2.pyi +61 -0
- yandex/cloud/iam/v1/awscompatibility/access_key_service_pb2.pyi +283 -0
- yandex/cloud/iam/v1/iam_token_service_pb2.pyi +80 -0
- yandex/cloud/iam/v1/key_pb2.pyi +90 -0
- yandex/cloud/iam/v1/key_service_pb2.pyi +320 -0
- yandex/cloud/iam/v1/resource_pb2.pyi +33 -0
- yandex/cloud/iam/v1/role_pb2.pyi +33 -0
- yandex/cloud/iam/v1/role_service_pb2.pyi +92 -0
- yandex/cloud/iam/v1/service_account_pb2.pyi +75 -0
- yandex/cloud/iam/v1/service_account_service_pb2.pyi +335 -0
- yandex/cloud/iam/v1/service_control_pb2.pyi +98 -0
- yandex/cloud/iam/v1/service_control_service_pb2.pyi +310 -0
- yandex/cloud/iam/v1/user_account_pb2.pyi +133 -0
- yandex/cloud/iam/v1/user_account_service_pb2.pyi +27 -0
- yandex/cloud/iam/v1/yandex_passport_user_account_service_pb2.pyi +27 -0
- yandex/cloud/iot/broker/v1/broker_data_service_pb2.pyi +45 -0
- yandex/cloud/iot/broker/v1/broker_pb2.pyi +209 -0
- yandex/cloud/iot/broker/v1/broker_service_pb2.pyi +627 -0
- yandex/cloud/iot/devices/v1/device_data_service_pb2.pyi +45 -0
- yandex/cloud/iot/devices/v1/device_pb2.pyi +233 -0
- yandex/cloud/iot/devices/v1/device_service_pb2.pyi +670 -0
- yandex/cloud/iot/devices/v1/registry_data_service_pb2.pyi +45 -0
- yandex/cloud/iot/devices/v1/registry_pb2.pyi +291 -0
- yandex/cloud/iot/devices/v1/registry_service_pb2.pyi +849 -0
- yandex/cloud/k8s/v1/cluster_pb2.pyi +610 -0
- yandex/cloud/k8s/v1/cluster_service_pb2.pyi +904 -0
- yandex/cloud/k8s/v1/maintenance_pb2.pyi +132 -0
- yandex/cloud/k8s/v1/node_group_pb2.pyi +365 -0
- yandex/cloud/k8s/v1/node_group_service_pb2.pyi +566 -0
- yandex/cloud/k8s/v1/node_pb2.pyi +784 -0
- yandex/cloud/k8s/v1/version_pb2.pyi +68 -0
- yandex/cloud/k8s/v1/version_service_pb2.pyi +64 -0
- yandex/cloud/kms/v1/asymmetricencryption/asymmetric_encryption_crypto_service_pb2.pyi +92 -0
- yandex/cloud/kms/v1/asymmetricencryption/asymmetric_encryption_key_pb2.pyi +149 -0
- yandex/cloud/kms/v1/asymmetricencryption/asymmetric_encryption_key_service_pb2.pyi +335 -0
- yandex/cloud/kms/v1/asymmetricsignature/asymmetric_signature_crypto_service_pb2.pyi +140 -0
- yandex/cloud/kms/v1/asymmetricsignature/asymmetric_signature_key_pb2.pyi +189 -0
- yandex/cloud/kms/v1/asymmetricsignature/asymmetric_signature_key_service_pb2.pyi +335 -0
- yandex/cloud/kms/v1/symmetric_crypto_service_pb2.pyi +270 -0
- yandex/cloud/kms/v1/symmetric_key_pb2.pyi +260 -0
- yandex/cloud/kms/v1/symmetric_key_service_pb2.pyi +591 -0
- yandex/cloud/loadbalancer/v1/health_check_pb2.pyi +102 -0
- yandex/cloud/loadbalancer/v1/network_load_balancer_pb2.pyi +364 -0
- yandex/cloud/loadbalancer/v1/network_load_balancer_service_pb2.pyi +747 -0
- yandex/cloud/loadbalancer/v1/target_group_pb2.pyi +109 -0
- yandex/cloud/loadbalancer/v1/target_group_service_pb2.pyi +434 -0
- yandex/cloud/loadtesting/agent/v1/agent_pb2.pyi +26 -0
- yandex/cloud/loadtesting/agent/v1/agent_registration_service_pb2.py +10 -10
- yandex/cloud/loadtesting/agent/v1/agent_registration_service_pb2.pyi +83 -0
- yandex/cloud/loadtesting/agent/v1/agent_service_pb2.pyi +79 -0
- yandex/cloud/loadtesting/agent/v1/job_service_pb2.pyi +309 -0
- yandex/cloud/loadtesting/agent/v1/monitoring_service_pb2.pyi +102 -0
- yandex/cloud/loadtesting/agent/v1/test_pb2.pyi +181 -0
- yandex/cloud/loadtesting/agent/v1/test_service_pb2.pyi +105 -0
- yandex/cloud/loadtesting/agent/v1/trail_service_pb2.pyi +178 -0
- yandex/cloud/loadtesting/api/v1/agent/agent_pb2.pyi +91 -0
- yandex/cloud/loadtesting/api/v1/agent/create_compute_instance_pb2.pyi +120 -0
- yandex/cloud/loadtesting/api/v1/agent/status_pb2.pyi +97 -0
- yandex/cloud/loadtesting/api/v1/agent_service_pb2.pyi +301 -0
- yandex/cloud/loadtesting/api/v1/common/quantiles_pb2.pyi +61 -0
- yandex/cloud/loadtesting/api/v1/common/tag_pb2.pyi +33 -0
- yandex/cloud/loadtesting/api/v1/config/config_pb2.pyi +53 -0
- yandex/cloud/loadtesting/api/v1/config_service_pb2.pyi +165 -0
- yandex/cloud/loadtesting/api/v1/report/status_pb2.pyi +45 -0
- yandex/cloud/loadtesting/api/v1/report/table/report_pb2.pyi +79 -0
- yandex/cloud/loadtesting/api/v1/report_service_pb2.pyi +78 -0
- yandex/cloud/loadtesting/api/v1/test/agent_selector_pb2.pyi +42 -0
- yandex/cloud/loadtesting/api/v1/test/artifact_settings_pb2.pyi +61 -0
- yandex/cloud/loadtesting/api/v1/test/details_pb2.pyi +54 -0
- yandex/cloud/loadtesting/api/v1/test/file_pointer_pb2.pyi +34 -0
- yandex/cloud/loadtesting/api/v1/test/imbalance_point_pb2.pyi +37 -0
- yandex/cloud/loadtesting/api/v1/test/object_storage_pb2.pyi +33 -0
- yandex/cloud/loadtesting/api/v1/test/single_agent_configuration_pb2.pyi +74 -0
- yandex/cloud/loadtesting/api/v1/test/status_pb2.pyi +96 -0
- yandex/cloud/loadtesting/api/v1/test/summary_pb2.pyi +96 -0
- yandex/cloud/loadtesting/api/v1/test/test_pb2.pyi +65 -0
- yandex/cloud/loadtesting/api/v1/test_service_pb2.pyi +233 -0
- yandex/cloud/lockbox/v1/payload_pb2.pyi +61 -0
- yandex/cloud/lockbox/v1/payload_service_pb2.pyi +31 -0
- yandex/cloud/lockbox/v1/secret_pb2.pyi +209 -0
- yandex/cloud/lockbox/v1/secret_service_pb2.pyi +634 -0
- yandex/cloud/logging/v1/export_pb2.pyi +121 -0
- yandex/cloud/logging/v1/export_service_pb2.pyi +474 -0
- yandex/cloud/logging/v1/log_entry_pb2.pyi +289 -0
- yandex/cloud/logging/v1/log_group_pb2.pyi +143 -0
- yandex/cloud/logging/v1/log_group_service_pb2.pyi +479 -0
- yandex/cloud/logging/v1/log_ingestion_service_pb2.pyi +98 -0
- yandex/cloud/logging/v1/log_reading_service_pb2.pyi +171 -0
- yandex/cloud/logging/v1/log_resource_pb2.pyi +65 -0
- yandex/cloud/logging/v1/sink_pb2.pyi +124 -0
- yandex/cloud/logging/v1/sink_service_pb2.pyi +390 -0
- yandex/cloud/marketplace/licensemanager/v1/instance_pb2.pyi +135 -0
- yandex/cloud/marketplace/licensemanager/v1/instance_service_pb2.pyi +102 -0
- yandex/cloud/marketplace/licensemanager/v1/lock_pb2.pyi +99 -0
- yandex/cloud/marketplace/licensemanager/v1/lock_service_pb2.pyi +230 -0
- yandex/cloud/marketplace/licensemanager/v1/template_pb2.pyi +107 -0
- yandex/cloud/marketplace/metering/v1/image_product_usage_service_pb2.pyi +64 -0
- yandex/cloud/marketplace/metering/v1/usage_record_pb2.pyi +111 -0
- yandex/cloud/marketplace/v1/metering/image_product_usage_service_pb2.pyi +64 -0
- yandex/cloud/marketplace/v1/metering/usage_record_pb2.pyi +111 -0
- yandex/cloud/mdb/clickhouse/v1/backup_pb2.pyi +97 -0
- yandex/cloud/mdb/clickhouse/v1/backup_service_pb2.py +9 -3
- yandex/cloud/mdb/clickhouse/v1/backup_service_pb2.pyi +125 -0
- yandex/cloud/mdb/clickhouse/v1/cluster_pb2.pyi +747 -0
- yandex/cloud/mdb/clickhouse/v1/cluster_service_pb2.py +130 -130
- yandex/cloud/mdb/clickhouse/v1/cluster_service_pb2.pyi +2274 -0
- yandex/cloud/mdb/clickhouse/v1/config/clickhouse_pb2.pyi +1473 -0
- yandex/cloud/mdb/clickhouse/v1/database_pb2.pyi +51 -0
- yandex/cloud/mdb/clickhouse/v1/database_service_pb2.pyi +184 -0
- yandex/cloud/mdb/clickhouse/v1/format_schema_pb2.pyi +67 -0
- yandex/cloud/mdb/clickhouse/v1/format_schema_service_pb2.pyi +246 -0
- yandex/cloud/mdb/clickhouse/v1/maintenance_pb2.pyi +129 -0
- yandex/cloud/mdb/clickhouse/v1/ml_model_pb2.pyi +63 -0
- yandex/cloud/mdb/clickhouse/v1/ml_model_service_pb2.pyi +241 -0
- yandex/cloud/mdb/clickhouse/v1/resource_preset_pb2.pyi +45 -0
- yandex/cloud/mdb/clickhouse/v1/resource_preset_service_pb2.pyi +83 -0
- yandex/cloud/mdb/clickhouse/v1/user_pb2.pyi +1717 -0
- yandex/cloud/mdb/clickhouse/v1/user_service_pb2.pyi +353 -0
- yandex/cloud/mdb/clickhouse/v1/version_pb2.pyi +43 -0
- yandex/cloud/mdb/clickhouse/v1/versions_service_pb2.pyi +67 -0
- yandex/cloud/mdb/elasticsearch/v1/auth_pb2.pyi +139 -0
- yandex/cloud/mdb/elasticsearch/v1/auth_service_pb2.pyi +247 -0
- yandex/cloud/mdb/elasticsearch/v1/backup_pb2.pyi +69 -0
- yandex/cloud/mdb/elasticsearch/v1/backup_service_pb2.pyi +87 -0
- yandex/cloud/mdb/elasticsearch/v1/cluster_pb2.pyi +544 -0
- yandex/cloud/mdb/elasticsearch/v1/cluster_service_pb2.pyi +1422 -0
- yandex/cloud/mdb/elasticsearch/v1/config/elasticsearch_pb2.pyi +105 -0
- yandex/cloud/mdb/elasticsearch/v1/extension_pb2.pyi +67 -0
- yandex/cloud/mdb/elasticsearch/v1/extension_service_pb2.pyi +223 -0
- yandex/cloud/mdb/elasticsearch/v1/maintenance_pb2.pyi +115 -0
- yandex/cloud/mdb/elasticsearch/v1/resource_preset_pb2.pyi +45 -0
- yandex/cloud/mdb/elasticsearch/v1/resource_preset_service_pb2.pyi +85 -0
- yandex/cloud/mdb/elasticsearch/v1/user_pb2.pyi +53 -0
- yandex/cloud/mdb/elasticsearch/v1/user_service_pb2.pyi +247 -0
- yandex/cloud/mdb/greenplum/v1/backup_pb2.pyi +110 -0
- yandex/cloud/mdb/greenplum/v1/backup_service_pb2.pyi +122 -0
- yandex/cloud/mdb/greenplum/v1/cluster_pb2.pyi +519 -0
- yandex/cloud/mdb/greenplum/v1/cluster_service_pb2.pyi +1274 -0
- yandex/cloud/mdb/greenplum/v1/config_pb2.pyi +961 -0
- yandex/cloud/mdb/greenplum/v1/hba_rule_pb2.pyi +101 -0
- yandex/cloud/mdb/greenplum/v1/hba_rule_service_pb2.pyi +184 -0
- yandex/cloud/mdb/greenplum/v1/host_pb2.pyi +127 -0
- yandex/cloud/mdb/greenplum/v1/maintenance_pb2.pyi +145 -0
- yandex/cloud/mdb/greenplum/v1/pxf_pb2.py +37 -37
- yandex/cloud/mdb/greenplum/v1/pxf_pb2.pyi +539 -0
- yandex/cloud/mdb/greenplum/v1/pxf_service_pb2.py +22 -22
- yandex/cloud/mdb/greenplum/v1/pxf_service_pb2.pyi +164 -0
- yandex/cloud/mdb/greenplum/v1/resource_preset_pb2.pyi +89 -0
- yandex/cloud/mdb/greenplum/v1/resource_preset_service_pb2.pyi +91 -0
- yandex/cloud/mdb/kafka/v1/cluster_pb2.pyi +844 -0
- yandex/cloud/mdb/kafka/v1/cluster_service_pb2.pyi +915 -0
- yandex/cloud/mdb/kafka/v1/common_pb2.pyi +71 -0
- yandex/cloud/mdb/kafka/v1/connector_pb2.pyi +690 -0
- yandex/cloud/mdb/kafka/v1/connector_service_pb2.pyi +342 -0
- yandex/cloud/mdb/kafka/v1/maintenance_pb2.pyi +115 -0
- yandex/cloud/mdb/kafka/v1/resource_preset_pb2.pyi +45 -0
- yandex/cloud/mdb/kafka/v1/resource_preset_service_pb2.pyi +85 -0
- yandex/cloud/mdb/kafka/v1/topic_pb2.pyi +375 -0
- yandex/cloud/mdb/kafka/v1/topic_service_pb2.pyi +252 -0
- yandex/cloud/mdb/kafka/v1/user_pb2.pyi +137 -0
- yandex/cloud/mdb/kafka/v1/user_service_pb2.pyi +360 -0
- yandex/cloud/mdb/mongodb/v1/backup_pb2.pyi +97 -0
- yandex/cloud/mdb/mongodb/v1/backup_service_pb2.pyi +121 -0
- yandex/cloud/mdb/mongodb/v1/cluster_pb2.pyi +1890 -0
- yandex/cloud/mdb/mongodb/v1/cluster_service_pb2.pyi +3146 -0
- yandex/cloud/mdb/mongodb/v1/config/mongodb3_6_pb2.pyi +536 -0
- yandex/cloud/mdb/mongodb/v1/config/mongodb4_0_pb2.pyi +522 -0
- yandex/cloud/mdb/mongodb/v1/config/mongodb4_2_pb2.pyi +693 -0
- yandex/cloud/mdb/mongodb/v1/config/mongodb4_4_enterprise_pb2.pyi +781 -0
- yandex/cloud/mdb/mongodb/v1/config/mongodb4_4_pb2.pyi +693 -0
- yandex/cloud/mdb/mongodb/v1/config/mongodb5_0_enterprise_pb2.pyi +794 -0
- yandex/cloud/mdb/mongodb/v1/config/mongodb5_0_pb2.pyi +699 -0
- yandex/cloud/mdb/mongodb/v1/config/mongodb6_0_enterprise_pb2.pyi +794 -0
- yandex/cloud/mdb/mongodb/v1/config/mongodb6_0_pb2.pyi +699 -0
- yandex/cloud/mdb/mongodb/v1/database_pb2.pyi +51 -0
- yandex/cloud/mdb/mongodb/v1/database_service_pb2.pyi +184 -0
- yandex/cloud/mdb/mongodb/v1/maintenance_pb2.pyi +129 -0
- yandex/cloud/mdb/mongodb/v1/resource_preset_pb2.pyi +45 -0
- yandex/cloud/mdb/mongodb/v1/resource_preset_service_pb2.pyi +84 -0
- yandex/cloud/mdb/mongodb/v1/user_pb2.pyi +91 -0
- yandex/cloud/mdb/mongodb/v1/user_service_pb2.pyi +347 -0
- yandex/cloud/mdb/mysql/v1/backup_pb2.pyi +111 -0
- yandex/cloud/mdb/mysql/v1/backup_service_pb2.pyi +129 -0
- yandex/cloud/mdb/mysql/v1/cluster_pb2.pyi +601 -0
- yandex/cloud/mdb/mysql/v1/cluster_service_pb2.pyi +1537 -0
- yandex/cloud/mdb/mysql/v1/config/mysql5_7_pb2.pyi +1023 -0
- yandex/cloud/mdb/mysql/v1/config/mysql8_0_pb2.pyi +969 -0
- yandex/cloud/mdb/mysql/v1/database_pb2.pyi +52 -0
- yandex/cloud/mdb/mysql/v1/database_service_pb2.pyi +192 -0
- yandex/cloud/mdb/mysql/v1/maintenance_pb2.pyi +129 -0
- yandex/cloud/mdb/mysql/v1/resource_preset_pb2.pyi +49 -0
- yandex/cloud/mdb/mysql/v1/resource_preset_service_pb2.pyi +86 -0
- yandex/cloud/mdb/mysql/v1/user_pb2.pyi +357 -0
- yandex/cloud/mdb/mysql/v1/user_service_pb2.pyi +378 -0
- yandex/cloud/mdb/mysql/v1alpha/backup_pb2.pyi +53 -0
- yandex/cloud/mdb/mysql/v1alpha/backup_service_pb2.pyi +89 -0
- yandex/cloud/mdb/mysql/v1alpha/cluster_pb2.pyi +470 -0
- yandex/cloud/mdb/mysql/v1alpha/cluster_service_pb2.pyi +1025 -0
- yandex/cloud/mdb/mysql/v1alpha/config/mysql5_7_pb2.pyi +87 -0
- yandex/cloud/mdb/mysql/v1alpha/database_pb2.pyi +49 -0
- yandex/cloud/mdb/mysql/v1alpha/database_service_pb2.pyi +184 -0
- yandex/cloud/mdb/mysql/v1alpha/resource_preset_pb2.pyi +45 -0
- yandex/cloud/mdb/mysql/v1alpha/resource_preset_service_pb2.pyi +83 -0
- yandex/cloud/mdb/mysql/v1alpha/user_pb2.pyi +185 -0
- yandex/cloud/mdb/mysql/v1alpha/user_service_pb2.pyi +312 -0
- yandex/cloud/mdb/opensearch/v1/auth_pb2.pyi +69 -0
- yandex/cloud/mdb/opensearch/v1/backup_pb2.pyi +69 -0
- yandex/cloud/mdb/opensearch/v1/backup_service_pb2.pyi +91 -0
- yandex/cloud/mdb/opensearch/v1/cluster_pb2.pyi +726 -0
- yandex/cloud/mdb/opensearch/v1/cluster_service_pb2.pyi +1827 -0
- yandex/cloud/mdb/opensearch/v1/config/opensearch_pb2.pyi +63 -0
- yandex/cloud/mdb/opensearch/v1/maintenance_pb2.pyi +155 -0
- yandex/cloud/mdb/opensearch/v1/resource_preset_pb2.pyi +45 -0
- yandex/cloud/mdb/opensearch/v1/resource_preset_service_pb2.pyi +87 -0
- yandex/cloud/mdb/postgresql/v1/backup_pb2.pyi +139 -0
- yandex/cloud/mdb/postgresql/v1/backup_service_pb2.pyi +125 -0
- yandex/cloud/mdb/postgresql/v1/cluster_pb2.pyi +935 -0
- yandex/cloud/mdb/postgresql/v1/cluster_service_pb2.pyi +1708 -0
- yandex/cloud/mdb/postgresql/v1/config/host10_1c_pb2.pyi +507 -0
- yandex/cloud/mdb/postgresql/v1/config/host10_pb2.pyi +507 -0
- yandex/cloud/mdb/postgresql/v1/config/host11_1c_pb2.pyi +501 -0
- yandex/cloud/mdb/postgresql/v1/config/host11_pb2.pyi +501 -0
- yandex/cloud/mdb/postgresql/v1/config/host12_1c_pb2.pyi +501 -0
- yandex/cloud/mdb/postgresql/v1/config/host12_pb2.pyi +501 -0
- yandex/cloud/mdb/postgresql/v1/config/host13_1c_pb2.pyi +501 -0
- yandex/cloud/mdb/postgresql/v1/config/host13_pb2.pyi +501 -0
- yandex/cloud/mdb/postgresql/v1/config/host14_1c_pb2.pyi +497 -0
- yandex/cloud/mdb/postgresql/v1/config/host14_pb2.pyi +497 -0
- yandex/cloud/mdb/postgresql/v1/config/host15_1c_pb2.pyi +497 -0
- yandex/cloud/mdb/postgresql/v1/config/host15_pb2.pyi +497 -0
- yandex/cloud/mdb/postgresql/v1/config/host16_1c_pb2.pyi +516 -0
- yandex/cloud/mdb/postgresql/v1/config/host16_pb2.pyi +516 -0
- yandex/cloud/mdb/postgresql/v1/config/host9_6_pb2.pyi +458 -0
- yandex/cloud/mdb/postgresql/v1/config/postgresql10_1c_pb2.pyi +931 -0
- yandex/cloud/mdb/postgresql/v1/config/postgresql10_pb2.pyi +923 -0
- yandex/cloud/mdb/postgresql/v1/config/postgresql11_1c_pb2.pyi +975 -0
- yandex/cloud/mdb/postgresql/v1/config/postgresql11_pb2.pyi +967 -0
- yandex/cloud/mdb/postgresql/v1/config/postgresql12_1c_pb2.pyi +999 -0
- yandex/cloud/mdb/postgresql/v1/config/postgresql12_pb2.pyi +991 -0
- yandex/cloud/mdb/postgresql/v1/config/postgresql13_1c_pb2.pyi +1053 -0
- yandex/cloud/mdb/postgresql/v1/config/postgresql13_pb2.pyi +1051 -0
- yandex/cloud/mdb/postgresql/v1/config/postgresql14_1c_pb2.pyi +1081 -0
- yandex/cloud/mdb/postgresql/v1/config/postgresql14_pb2.pyi +1079 -0
- yandex/cloud/mdb/postgresql/v1/config/postgresql15_1c_pb2.pyi +1091 -0
- yandex/cloud/mdb/postgresql/v1/config/postgresql15_pb2.pyi +1083 -0
- yandex/cloud/mdb/postgresql/v1/config/postgresql16_1c_pb2.pyi +1093 -0
- yandex/cloud/mdb/postgresql/v1/config/postgresql16_pb2.pyi +1085 -0
- yandex/cloud/mdb/postgresql/v1/config/postgresql9_6_pb2.pyi +651 -0
- yandex/cloud/mdb/postgresql/v1/database_pb2.pyi +150 -0
- yandex/cloud/mdb/postgresql/v1/database_service_pb2.pyi +260 -0
- yandex/cloud/mdb/postgresql/v1/maintenance_pb2.pyi +129 -0
- yandex/cloud/mdb/postgresql/v1/perf_diag_pb2.pyi +462 -0
- yandex/cloud/mdb/postgresql/v1/perf_diag_service_pb2.pyi +139 -0
- yandex/cloud/mdb/postgresql/v1/resource_preset_pb2.pyi +45 -0
- yandex/cloud/mdb/postgresql/v1/resource_preset_service_pb2.pyi +83 -0
- yandex/cloud/mdb/postgresql/v1/user_pb2.pyi +534 -0
- yandex/cloud/mdb/postgresql/v1/user_service_pb2.pyi +396 -0
- yandex/cloud/mdb/redis/v1/backup_pb2.pyi +65 -0
- yandex/cloud/mdb/redis/v1/backup_service_pb2.pyi +89 -0
- yandex/cloud/mdb/redis/v1/cluster_pb2.pyi +610 -0
- yandex/cloud/mdb/redis/v1/cluster_service_pb2.pyi +1686 -0
- yandex/cloud/mdb/redis/v1/config/redis5_0_pb2.pyi +204 -0
- yandex/cloud/mdb/redis/v1/config/redis6_0_pb2.pyi +204 -0
- yandex/cloud/mdb/redis/v1/config/redis6_2_pb2.pyi +210 -0
- yandex/cloud/mdb/redis/v1/config/redis7_0_pb2.pyi +210 -0
- yandex/cloud/mdb/redis/v1/config/redis_pb2.pyi +210 -0
- yandex/cloud/mdb/redis/v1/maintenance_pb2.pyi +129 -0
- yandex/cloud/mdb/redis/v1/resource_preset_pb2.pyi +45 -0
- yandex/cloud/mdb/redis/v1/resource_preset_service_pb2.pyi +83 -0
- yandex/cloud/mdb/sqlserver/v1/backup_pb2.pyi +62 -0
- yandex/cloud/mdb/sqlserver/v1/backup_service_pb2.pyi +90 -0
- yandex/cloud/mdb/sqlserver/v1/cluster_pb2.pyi +571 -0
- yandex/cloud/mdb/sqlserver/v1/cluster_service_pb2.pyi +1226 -0
- yandex/cloud/mdb/sqlserver/v1/config/sqlserver2016sp2_pb2.pyi +231 -0
- yandex/cloud/mdb/sqlserver/v1/config/sqlserver2017_pb2.pyi +231 -0
- yandex/cloud/mdb/sqlserver/v1/config/sqlserver2019_pb2.pyi +231 -0
- yandex/cloud/mdb/sqlserver/v1/database_pb2.pyi +52 -0
- yandex/cloud/mdb/sqlserver/v1/database_service_pb2.pyi +384 -0
- yandex/cloud/mdb/sqlserver/v1/resource_preset_pb2.pyi +45 -0
- yandex/cloud/mdb/sqlserver/v1/resource_preset_service_pb2.pyi +83 -0
- yandex/cloud/mdb/sqlserver/v1/user_pb2.pyi +185 -0
- yandex/cloud/mdb/sqlserver/v1/user_service_pb2.pyi +368 -0
- yandex/cloud/monitoring/v3/chart_widget_pb2.pyi +641 -0
- yandex/cloud/monitoring/v3/dashboard_pb2.pyi +122 -0
- yandex/cloud/monitoring/v3/dashboard_service_pb2.pyi +377 -0
- yandex/cloud/monitoring/v3/downsampling_pb2.pyi +118 -0
- yandex/cloud/monitoring/v3/parametrization_pb2.pyi +256 -0
- yandex/cloud/monitoring/v3/text_widget_pb2.pyi +29 -0
- yandex/cloud/monitoring/v3/title_widget_pb2.pyi +69 -0
- yandex/cloud/monitoring/v3/unit_format_pb2.pyi +480 -0
- yandex/cloud/monitoring/v3/widget_pb2.pyi +82 -0
- yandex/cloud/oauth/claims_pb2.pyi +136 -0
- yandex/cloud/operation/operation_pb2.pyi +89 -0
- yandex/cloud/operation/operation_service_pb2.pyi +43 -0
- yandex/cloud/organizationmanager/v1/group_mapping_pb2.pyi +57 -0
- yandex/cloud/organizationmanager/v1/group_mapping_service_pb2.pyi +305 -0
- yandex/cloud/organizationmanager/v1/group_pb2.pyi +51 -0
- yandex/cloud/organizationmanager/v1/group_service_pb2.pyi +464 -0
- yandex/cloud/organizationmanager/v1/organization_pb2.pyi +73 -0
- yandex/cloud/organizationmanager/v1/organization_service_pb2.pyi +231 -0
- yandex/cloud/organizationmanager/v1/os_login_service_pb2.pyi +421 -0
- yandex/cloud/organizationmanager/v1/saml/certificate_pb2.pyi +53 -0
- yandex/cloud/organizationmanager/v1/saml/certificate_service_pb2.pyi +298 -0
- yandex/cloud/organizationmanager/v1/saml/federation_pb2.pyi +179 -0
- yandex/cloud/organizationmanager/v1/saml/federation_service_pb2.pyi +625 -0
- yandex/cloud/organizationmanager/v1/ssh_certificate_service_pb2.pyi +62 -0
- yandex/cloud/organizationmanager/v1/user_account_pb2.pyi +133 -0
- yandex/cloud/organizationmanager/v1/user_service_pb2.pyi +150 -0
- yandex/cloud/organizationmanager/v1/user_ssh_key_pb2.pyi +53 -0
- yandex/cloud/organizationmanager/v1/user_ssh_key_service_pb2.pyi +194 -0
- yandex/cloud/quota/quota_pb2.pyi +88 -0
- yandex/cloud/reference/reference_pb2.pyi +77 -0
- yandex/cloud/resourcemanager/v1/cloud_pb2.pyi +73 -0
- yandex/cloud/resourcemanager/v1/cloud_service_pb2.pyi +360 -0
- yandex/cloud/resourcemanager/v1/folder_pb2.pyi +109 -0
- yandex/cloud/resourcemanager/v1/folder_service_pb2.pyi +364 -0
- yandex/cloud/serverless/apigateway/v1/apigateway_pb2.py +24 -21
- yandex/cloud/serverless/apigateway/v1/apigateway_pb2.pyi +332 -0
- yandex/cloud/serverless/apigateway/v1/apigateway_service_pb2.py +53 -48
- yandex/cloud/serverless/apigateway/v1/apigateway_service_pb2.pyi +618 -0
- yandex/cloud/serverless/apigateway/websocket/v1/connection_pb2.pyi +71 -0
- yandex/cloud/serverless/apigateway/websocket/v1/connection_service_pb2.pyi +113 -0
- yandex/cloud/serverless/containers/v1/container_pb2.pyi +538 -0
- yandex/cloud/serverless/containers/v1/container_service_pb2.pyi +668 -0
- yandex/cloud/serverless/functions/v1/function_pb2.pyi +607 -0
- yandex/cloud/serverless/functions/v1/function_service_pb2.pyi +1073 -0
- yandex/cloud/serverless/functions/v1/network_service_pb2.pyi +312 -0
- yandex/cloud/serverless/mdbproxy/v1/proxy_pb2.pyi +163 -0
- yandex/cloud/serverless/mdbproxy/v1/proxy_service_pb2.pyi +359 -0
- yandex/cloud/serverless/triggers/v1/predicate_pb2.pyi +80 -0
- yandex/cloud/serverless/triggers/v1/trigger_pb2.pyi +1109 -0
- yandex/cloud/serverless/triggers/v1/trigger_service_pb2.pyi +439 -0
- yandex/cloud/speechsense/v1/audio_pb2.pyi +204 -0
- yandex/cloud/speechsense/v1/talk_service_pb2.pyi +161 -0
- yandex/cloud/speechsense/v1/text_pb2.pyi +70 -0
- yandex/cloud/storage/v1/bucket_pb2.pyi +1465 -0
- yandex/cloud/storage/v1/bucket_service_pb2.pyi +540 -0
- yandex/cloud/validation_pb2.pyi +53 -0
- yandex/cloud/video/v1/channel_pb2.pyi +79 -0
- yandex/cloud/video/v1/channel_service_pb2.pyi +259 -0
- yandex/cloud/video/v1/episode_pb2.pyi +140 -0
- yandex/cloud/video/v1/episode_service_pb2.pyi +451 -0
- yandex/cloud/video/v1/stream_line_pb2.pyi +305 -0
- yandex/cloud/video/v1/stream_line_service_pb2.pyi +563 -0
- yandex/cloud/video/v1/stream_pb2.pyi +197 -0
- yandex/cloud/video/v1/stream_service_pb2.pyi +396 -0
- yandex/cloud/video/v1/thumbnail_pb2.pyi +39 -0
- yandex/cloud/video/v1/thumbnail_service_pb2.pyi +184 -0
- yandex/cloud/video/v1/video_pb2.pyi +211 -0
- yandex/cloud/video/v1/video_service_pb2.pyi +464 -0
- yandex/cloud/vpc/v1/address_pb2.pyi +226 -0
- yandex/cloud/vpc/v1/address_service_pb2.pyi +491 -0
- yandex/cloud/vpc/v1/gateway_pb2.pyi +92 -0
- yandex/cloud/vpc/v1/gateway_service_pb2.pyi +403 -0
- yandex/cloud/vpc/v1/network_pb2.pyi +79 -0
- yandex/cloud/vpc/v1/network_service_pb2.pyi +547 -0
- yandex/cloud/vpc/v1/route_table_pb2.pyi +136 -0
- yandex/cloud/vpc/v1/route_table_service_pb2.pyi +381 -0
- yandex/cloud/vpc/v1/security_group_pb2.pyi +266 -0
- yandex/cloud/vpc/v1/security_group_service_pb2.pyi +591 -0
- yandex/cloud/vpc/v1/subnet_pb2.pyi +155 -0
- yandex/cloud/vpc/v1/subnet_service_pb2.pyi +593 -0
- yandex/cloud/ydb/v1/backup_pb2.pyi +353 -0
- yandex/cloud/ydb/v1/backup_service_pb2.pyi +166 -0
- yandex/cloud/ydb/v1/database_pb2.pyi +577 -0
- yandex/cloud/ydb/v1/database_service_pb2.pyi +550 -0
- yandex/cloud/ydb/v1/location_pb2.pyi +29 -0
- yandex/cloud/ydb/v1/location_service_pb2.pyi +83 -0
- yandex/cloud/ydb/v1/resource_preset_pb2.pyi +32 -0
- yandex/cloud/ydb/v1/resource_preset_service_pb2.pyi +83 -0
- yandex/cloud/ydb/v1/storage_type_pb2.pyi +32 -0
- yandex/cloud/ydb/v1/storage_type_service_pb2.pyi +83 -0
- yandexcloud/_auth_fabric.py +46 -41
- yandexcloud/_auth_plugin.py +36 -18
- yandexcloud/_backoff.py +8 -7
- yandexcloud/_channels.py +27 -13
- yandexcloud/_helpers.py +15 -29
- yandexcloud/_operation_waiter.py +32 -18
- yandexcloud/_retry_interceptor.py +39 -22
- yandexcloud/_sdk.py +81 -32
- yandexcloud/_wrappers/__init__.py +9 -2
- yandexcloud/_wrappers/dataproc/__init__.py +11 -10
- yandexcloud/auth.py +10 -2
- yandexcloud/operations.py +22 -7
- {yandexcloud-0.287.0.dist-info → yandexcloud-0.289.0.dist-info}/AUTHORS +2 -3
- {yandexcloud-0.287.0.dist-info → yandexcloud-0.289.0.dist-info}/METADATA +4 -4
- {yandexcloud-0.287.0.dist-info → yandexcloud-0.289.0.dist-info}/RECORD +565 -26
- {yandexcloud-0.287.0.dist-info → yandexcloud-0.289.0.dist-info}/LICENSE +0 -0
- {yandexcloud-0.287.0.dist-info → yandexcloud-0.289.0.dist-info}/WHEEL +0 -0
- {yandexcloud-0.287.0.dist-info → yandexcloud-0.289.0.dist-info}/top_level.txt +0 -0
yandexcloud/_helpers.py
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
# -*- coding: utf-8 -*-
|
|
2
|
+
from typing import TYPE_CHECKING, Optional
|
|
2
3
|
|
|
3
4
|
from yandex.cloud.iam.v1.service_account_service_pb2 import ListServiceAccountsRequest
|
|
4
5
|
from yandex.cloud.iam.v1.service_account_service_pb2_grpc import (
|
|
@@ -9,64 +10,51 @@ from yandex.cloud.vpc.v1.network_service_pb2_grpc import NetworkServiceStub
|
|
|
9
10
|
from yandex.cloud.vpc.v1.subnet_service_pb2 import ListSubnetsRequest
|
|
10
11
|
from yandex.cloud.vpc.v1.subnet_service_pb2_grpc import SubnetServiceStub
|
|
11
12
|
|
|
13
|
+
if TYPE_CHECKING:
|
|
14
|
+
from yandexcloud._sdk import SDK
|
|
12
15
|
|
|
13
|
-
|
|
14
|
-
|
|
16
|
+
|
|
17
|
+
class Helpers:
|
|
18
|
+
def __init__(self, sdk: "SDK"):
|
|
15
19
|
self.sdk = sdk
|
|
16
20
|
|
|
17
|
-
def find_service_account_id(self, folder_id):
|
|
21
|
+
def find_service_account_id(self, folder_id: str) -> str:
|
|
18
22
|
"""
|
|
19
23
|
Get service account id in case the folder has the only one service account
|
|
20
24
|
|
|
21
25
|
:param folder_id: ID of the folder
|
|
22
|
-
:type folder_id: str
|
|
23
26
|
:return ID of the service account
|
|
24
|
-
:rtype str
|
|
25
27
|
"""
|
|
26
28
|
service = self.sdk.client(ServiceAccountServiceStub)
|
|
27
29
|
service_accounts = service.List(ListServiceAccountsRequest(folder_id=folder_id)).service_accounts
|
|
28
30
|
if len(service_accounts) == 1:
|
|
29
31
|
return service_accounts[0].id
|
|
30
32
|
if len(service_accounts) == 0:
|
|
31
|
-
raise RuntimeError(
|
|
32
|
-
|
|
33
|
-
)
|
|
34
|
-
raise RuntimeError(
|
|
35
|
-
"There are more than one service account in folder {folder_id}, please specify it".format(
|
|
36
|
-
folder_id=folder_id
|
|
37
|
-
)
|
|
38
|
-
)
|
|
33
|
+
raise RuntimeError(f"There are no service accounts in folder {folder_id}, please create it.")
|
|
34
|
+
raise RuntimeError(f"There are more than one service account in folder {folder_id}, please specify it")
|
|
39
35
|
|
|
40
|
-
def find_network_id(self, folder_id):
|
|
36
|
+
def find_network_id(self, folder_id: str) -> str:
|
|
41
37
|
"""
|
|
42
38
|
Get ID of the first network in folder
|
|
43
39
|
|
|
44
40
|
:param folder_id: ID of the folder
|
|
45
|
-
:type folder_id: str
|
|
46
41
|
:return ID of the network
|
|
47
|
-
:rtype str
|
|
48
42
|
"""
|
|
49
43
|
networks = self.sdk.client(NetworkServiceStub).List(ListNetworksRequest(folder_id=folder_id)).networks
|
|
50
44
|
if not networks:
|
|
51
|
-
raise RuntimeError("No networks in folder: {folder_id}"
|
|
45
|
+
raise RuntimeError(f"No networks in folder: {folder_id}")
|
|
52
46
|
if len(networks) > 1:
|
|
53
|
-
raise RuntimeError(
|
|
54
|
-
"There are more than one network in folder {folder_id}, please specify it".format(folder_id=folder_id)
|
|
55
|
-
)
|
|
47
|
+
raise RuntimeError("There are more than one network in folder {folder_id}, please specify it")
|
|
56
48
|
return networks[0].id
|
|
57
49
|
|
|
58
|
-
def find_subnet_id(self, folder_id, zone_id, network_id=None):
|
|
50
|
+
def find_subnet_id(self, folder_id: str, zone_id: str, network_id: Optional[str] = None) -> str:
|
|
59
51
|
"""
|
|
60
52
|
Get ID of the subnetwork of specified network in specified availability zone
|
|
61
53
|
|
|
62
54
|
:param folder_id: ID of the folder
|
|
63
|
-
:type folder_id: str
|
|
64
55
|
:param zone_id: ID of the availability zone
|
|
65
|
-
:type zone_id: str
|
|
66
56
|
:param network_id: ID of the network
|
|
67
|
-
:type network_id: str
|
|
68
57
|
:return ID of the subnetwork
|
|
69
|
-
:rtype str
|
|
70
58
|
"""
|
|
71
59
|
subnet_service = self.sdk.client(SubnetServiceStub)
|
|
72
60
|
subnets = subnet_service.List(ListSubnetsRequest(folder_id=folder_id)).subnets
|
|
@@ -77,7 +65,5 @@ class Helpers(object):
|
|
|
77
65
|
if len(applicable) == 1:
|
|
78
66
|
return applicable[0].id
|
|
79
67
|
if len(applicable) == 0:
|
|
80
|
-
raise RuntimeError("There are no subnets in {zone_id} zone, please create it."
|
|
81
|
-
raise RuntimeError(
|
|
82
|
-
"There are more than one subnet in {zone_id} zone, please specify it".format(zone_id=zone_id)
|
|
83
|
-
)
|
|
68
|
+
raise RuntimeError(f"There are no subnets in {zone_id} zone, please create it.")
|
|
69
|
+
raise RuntimeError(f"There are more than one subnet in {zone_id} zone, please specify it")
|
yandexcloud/_operation_waiter.py
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import logging
|
|
2
2
|
import time
|
|
3
3
|
from datetime import datetime
|
|
4
|
+
from typing import TYPE_CHECKING, Optional, Type, Union
|
|
4
5
|
|
|
5
6
|
import grpc
|
|
6
7
|
from google.protobuf.empty_pb2 import Empty
|
|
@@ -11,8 +12,14 @@ from yandexcloud._backoff import backoff_exponential_jittered_min_interval
|
|
|
11
12
|
from yandexcloud._retry_interceptor import RetryInterceptor
|
|
12
13
|
from yandexcloud.operations import OperationError, OperationResult
|
|
13
14
|
|
|
15
|
+
if TYPE_CHECKING:
|
|
16
|
+
import google.protobuf.message
|
|
14
17
|
|
|
15
|
-
|
|
18
|
+
from yandex.cloud.operation.operation_pb2 import Operation
|
|
19
|
+
from yandexcloud._sdk import SDK
|
|
20
|
+
|
|
21
|
+
|
|
22
|
+
def operation_waiter(sdk: "SDK", operation_id: str, timeout: Optional[float]) -> "OperationWaiter":
|
|
16
23
|
retriable_codes = (
|
|
17
24
|
grpc.StatusCode.UNAVAILABLE,
|
|
18
25
|
grpc.StatusCode.RESOURCE_EXHAUSTED,
|
|
@@ -32,14 +39,21 @@ def operation_waiter(sdk, operation_id, timeout):
|
|
|
32
39
|
return OperationWaiter(operation_id, operation_service, timeout)
|
|
33
40
|
|
|
34
41
|
|
|
35
|
-
def wait_for_operation(sdk, operation_id, timeout):
|
|
42
|
+
def wait_for_operation(sdk: "SDK", operation_id: str, timeout: Optional[float]) -> Optional["Operation"]:
|
|
36
43
|
waiter = operation_waiter(sdk, operation_id, timeout)
|
|
37
44
|
for _ in waiter:
|
|
38
45
|
time.sleep(1)
|
|
39
46
|
return waiter.operation
|
|
40
47
|
|
|
41
48
|
|
|
42
|
-
def get_operation_result(
|
|
49
|
+
def get_operation_result(
|
|
50
|
+
sdk: "SDK",
|
|
51
|
+
operation: "Operation",
|
|
52
|
+
response_type: Optional[Type["google.protobuf.message.Message"]] = None,
|
|
53
|
+
meta_type: Optional[Type["google.protobuf.message.Message"]] = None,
|
|
54
|
+
timeout: Optional[float] = None,
|
|
55
|
+
logger: Optional[logging.Logger] = None,
|
|
56
|
+
) -> Union["OperationResult", "OperationError"]:
|
|
43
57
|
if not logger:
|
|
44
58
|
logger = logging.getLogger()
|
|
45
59
|
logger.addHandler(logging.NullHandler())
|
|
@@ -47,8 +61,8 @@ def get_operation_result(sdk, operation, response_type=None, meta_type=None, tim
|
|
|
47
61
|
created_at = datetime.fromtimestamp(operation.created_at.seconds)
|
|
48
62
|
message = (
|
|
49
63
|
"Running Yandex.Cloud operation. ID: {id}. "
|
|
50
|
-
|
|
51
|
-
|
|
64
|
+
"Description: {description}. Created at: {created_at}. "
|
|
65
|
+
"Created by: {created_by}."
|
|
52
66
|
)
|
|
53
67
|
message = message.format(
|
|
54
68
|
id=operation.id,
|
|
@@ -60,14 +74,14 @@ def get_operation_result(sdk, operation, response_type=None, meta_type=None, tim
|
|
|
60
74
|
unpacked_meta = meta_type()
|
|
61
75
|
operation.metadata.Unpack(unpacked_meta)
|
|
62
76
|
operation_result.meta = unpacked_meta
|
|
63
|
-
message += " Meta: {unpacked_meta}."
|
|
77
|
+
message += f" Meta: {unpacked_meta}."
|
|
64
78
|
logger.info(message)
|
|
65
79
|
result = wait_for_operation(sdk, operation.id, timeout=timeout)
|
|
80
|
+
if result is None:
|
|
81
|
+
return OperationError(message="Unexpected operation result", operation_result=OperationResult(operation))
|
|
66
82
|
if result.error and result.error.code:
|
|
67
83
|
error_message = (
|
|
68
|
-
"Error Yandex.Cloud operation. ID: {id}. "
|
|
69
|
-
+ "Error code: {code}. Details: {details}. "
|
|
70
|
-
+ "Message: {message}."
|
|
84
|
+
"Error Yandex.Cloud operation. ID: {id}. Error code: {code}. Details: {details}. Message: {message}."
|
|
71
85
|
)
|
|
72
86
|
error_message = error_message.format(
|
|
73
87
|
id=result.id,
|
|
@@ -76,38 +90,38 @@ def get_operation_result(sdk, operation, response_type=None, meta_type=None, tim
|
|
|
76
90
|
message=result.error.message,
|
|
77
91
|
)
|
|
78
92
|
logger.error(error_message)
|
|
79
|
-
raise OperationError(message=error_message, operation_result=
|
|
93
|
+
raise OperationError(message=error_message, operation_result=OperationResult(operation))
|
|
80
94
|
|
|
81
|
-
log_message = "Done Yandex.Cloud operation. ID: {id}."
|
|
95
|
+
log_message = f"Done Yandex.Cloud operation. ID: {operation.id}."
|
|
82
96
|
if response_type and response_type is not Empty:
|
|
83
97
|
unpacked_response = response_type()
|
|
84
98
|
result.response.Unpack(unpacked_response)
|
|
85
99
|
operation_result.response = unpacked_response
|
|
86
|
-
log_message += " Response: {unpacked_response}."
|
|
100
|
+
log_message += f" Response: {unpacked_response}."
|
|
87
101
|
logger.info(log_message)
|
|
88
102
|
return operation_result
|
|
89
103
|
|
|
90
104
|
|
|
91
105
|
class OperationWaiter:
|
|
92
|
-
def __init__(self, operation_id, operation_service, timeout=None):
|
|
93
|
-
self.__operation = None
|
|
106
|
+
def __init__(self, operation_id: str, operation_service: "OperationServiceStub", timeout: Optional[float] = None):
|
|
107
|
+
self.__operation: Optional["Operation"] = None
|
|
94
108
|
self.__operation_id = operation_id
|
|
95
109
|
self.__operation_service = operation_service
|
|
96
110
|
self.__deadline = time.time() + timeout if timeout else None
|
|
97
111
|
|
|
98
112
|
@property
|
|
99
|
-
def operation(self):
|
|
113
|
+
def operation(self) -> Optional["Operation"]:
|
|
100
114
|
return self.__operation
|
|
101
115
|
|
|
102
116
|
@property
|
|
103
|
-
def done(self):
|
|
117
|
+
def done(self) -> bool:
|
|
104
118
|
self.__operation = self.__operation_service.Get(GetOperationRequest(operation_id=self.__operation_id))
|
|
105
119
|
return self.__operation is not None and self.__operation.done
|
|
106
120
|
|
|
107
|
-
def __iter__(self):
|
|
121
|
+
def __iter__(self) -> "OperationWaiter":
|
|
108
122
|
return self
|
|
109
123
|
|
|
110
|
-
def __next__(self):
|
|
124
|
+
def __next__(self) -> None:
|
|
111
125
|
if self.done or self.__deadline is not None and time.time() >= self.__deadline:
|
|
112
126
|
raise StopIteration()
|
|
113
127
|
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import collections
|
|
2
2
|
import time
|
|
3
3
|
import uuid
|
|
4
|
+
from typing import Callable, Iterable, Optional
|
|
4
5
|
|
|
5
6
|
import grpc
|
|
6
7
|
|
|
@@ -41,11 +42,11 @@ class RetryInterceptor(grpc.UnaryUnaryClientInterceptor):
|
|
|
41
42
|
|
|
42
43
|
def __init__(
|
|
43
44
|
self,
|
|
44
|
-
max_retry_count=0,
|
|
45
|
-
retriable_codes=_DEFAULT_RETRIABLE_CODES,
|
|
46
|
-
add_retry_count_to_header=False,
|
|
47
|
-
back_off_func=None,
|
|
48
|
-
per_call_timeout=None,
|
|
45
|
+
max_retry_count: int = 0,
|
|
46
|
+
retriable_codes: Iterable["grpc.StatusCode"] = _DEFAULT_RETRIABLE_CODES,
|
|
47
|
+
add_retry_count_to_header: bool = False,
|
|
48
|
+
back_off_func: Optional[Callable[[int], float]] = None,
|
|
49
|
+
per_call_timeout: Optional[float] = None,
|
|
49
50
|
):
|
|
50
51
|
# pylint: disable=super-init-not-called
|
|
51
52
|
self.__max_retry_count = max_retry_count
|
|
@@ -54,7 +55,12 @@ class RetryInterceptor(grpc.UnaryUnaryClientInterceptor):
|
|
|
54
55
|
self.__back_off_func = back_off_func
|
|
55
56
|
self.__per_call_timeout = per_call_timeout
|
|
56
57
|
|
|
57
|
-
def intercept_unary_unary(
|
|
58
|
+
def intercept_unary_unary(
|
|
59
|
+
self,
|
|
60
|
+
continuation: Callable[["grpc.ClientCallDetails", "grpc.TRequest"], "grpc.CallFuture[grpc.TResponse]"],
|
|
61
|
+
client_call_details: "grpc.ClientCallDetails",
|
|
62
|
+
request: "grpc.TRequest",
|
|
63
|
+
) -> "grpc.CallFuture[grpc.TResponse]":
|
|
58
64
|
client_call_details = self.__add_idempotency_token(client_call_details)
|
|
59
65
|
|
|
60
66
|
attempt = 0
|
|
@@ -66,7 +72,7 @@ class RetryInterceptor(grpc.UnaryUnaryClientInterceptor):
|
|
|
66
72
|
except _RetryCall:
|
|
67
73
|
attempt += 1
|
|
68
74
|
|
|
69
|
-
def __wait_backoff(self, attempt, deadline):
|
|
75
|
+
def __wait_backoff(self, attempt: int, deadline: Optional[float]) -> None:
|
|
70
76
|
if self.__back_off_func is None:
|
|
71
77
|
return
|
|
72
78
|
|
|
@@ -82,10 +88,10 @@ class RetryInterceptor(grpc.UnaryUnaryClientInterceptor):
|
|
|
82
88
|
time.sleep(backoff_timeout)
|
|
83
89
|
|
|
84
90
|
@staticmethod
|
|
85
|
-
def __deadline(timeout):
|
|
91
|
+
def __deadline(timeout: Optional[float]) -> Optional[float]:
|
|
86
92
|
return time.time() + timeout if timeout is not None else None
|
|
87
93
|
|
|
88
|
-
def __is_retriable(self, error):
|
|
94
|
+
def __is_retriable(self, error: "grpc.StatusCode") -> bool:
|
|
89
95
|
if error in self._NON_RETRIABLE_CODES:
|
|
90
96
|
return False
|
|
91
97
|
|
|
@@ -95,7 +101,9 @@ class RetryInterceptor(grpc.UnaryUnaryClientInterceptor):
|
|
|
95
101
|
return False
|
|
96
102
|
|
|
97
103
|
@staticmethod
|
|
98
|
-
def __min_deadline(d1, d2):
|
|
104
|
+
def __min_deadline(d1: Optional[float], d2: Optional[float]) -> Optional[float]:
|
|
105
|
+
if d2 is None and d1 is None:
|
|
106
|
+
return None
|
|
99
107
|
if d1 is None:
|
|
100
108
|
return d2
|
|
101
109
|
|
|
@@ -104,7 +112,14 @@ class RetryInterceptor(grpc.UnaryUnaryClientInterceptor):
|
|
|
104
112
|
|
|
105
113
|
return min(d1, d2)
|
|
106
114
|
|
|
107
|
-
def __grpc_call(
|
|
115
|
+
def __grpc_call(
|
|
116
|
+
self,
|
|
117
|
+
attempt: int,
|
|
118
|
+
deadline: Optional[float],
|
|
119
|
+
continuation: Callable[["grpc.ClientCallDetails", "grpc.TRequest"], "grpc.CallFuture[grpc.TResponse]"],
|
|
120
|
+
client_call_details: "grpc.ClientCallDetails",
|
|
121
|
+
request: "grpc.TRequest",
|
|
122
|
+
) -> "grpc.CallFuture[grpc.TResponse]":
|
|
108
123
|
if attempt > 0:
|
|
109
124
|
if self.__add_retry_count_to_header:
|
|
110
125
|
client_call_details = self.__append_retry_attempt_header(client_call_details, attempt)
|
|
@@ -115,24 +130,21 @@ class RetryInterceptor(grpc.UnaryUnaryClientInterceptor):
|
|
|
115
130
|
if call_deadline is not None:
|
|
116
131
|
client_call_details = self.__adjust_timeout(client_call_details, call_deadline)
|
|
117
132
|
|
|
118
|
-
def retry():
|
|
133
|
+
def retry() -> None:
|
|
119
134
|
self.__wait_backoff(attempt, deadline)
|
|
120
135
|
raise _RetryCall()
|
|
121
136
|
|
|
122
137
|
try:
|
|
123
138
|
result = continuation(client_call_details, request)
|
|
124
|
-
if isinstance(result, grpc.RpcError):
|
|
139
|
+
if isinstance(result, grpc.RpcError): # type: ignore
|
|
125
140
|
raise result
|
|
126
141
|
return result
|
|
127
|
-
except grpc.RpcError as
|
|
142
|
+
except grpc.RpcError as error:
|
|
128
143
|
# no retries left
|
|
129
144
|
if 0 <= self.__max_retry_count <= attempt:
|
|
130
145
|
raise
|
|
131
146
|
|
|
132
|
-
err_code =
|
|
133
|
-
if isinstance(e, grpc.Call):
|
|
134
|
-
err_code = e.code()
|
|
135
|
-
|
|
147
|
+
err_code = error.code() # pylint: disable=no-member
|
|
136
148
|
if err_code == grpc.StatusCode.DEADLINE_EXCEEDED:
|
|
137
149
|
# if there is no per_call_timeout, or it is original deadline -> abort, otherwise, retry call.
|
|
138
150
|
if self.__per_call_timeout is None or deadline is not None and deadline < time.time():
|
|
@@ -144,9 +156,10 @@ class RetryInterceptor(grpc.UnaryUnaryClientInterceptor):
|
|
|
144
156
|
raise
|
|
145
157
|
|
|
146
158
|
retry()
|
|
159
|
+
raise RuntimeError("Unexpected behavior")
|
|
147
160
|
|
|
148
161
|
@staticmethod
|
|
149
|
-
def __adjust_timeout(client_call_details, deadline):
|
|
162
|
+
def __adjust_timeout(client_call_details: "grpc.ClientCallDetails", deadline: float) -> "grpc.ClientCallDetails":
|
|
150
163
|
timeout = max(deadline - time.time(), 0.0)
|
|
151
164
|
return _ClientCallDetails(
|
|
152
165
|
client_call_details.method,
|
|
@@ -157,14 +170,18 @@ class RetryInterceptor(grpc.UnaryUnaryClientInterceptor):
|
|
|
157
170
|
getattr(client_call_details, "compression", None),
|
|
158
171
|
)
|
|
159
172
|
|
|
160
|
-
def __add_idempotency_token(self, client_call_details):
|
|
173
|
+
def __add_idempotency_token(self, client_call_details: "grpc.ClientCallDetails") -> "grpc.ClientCallDetails":
|
|
161
174
|
return self.__append_metadata(client_call_details, self._IDEMPOTENCY_TOKEN_METADATA_KEY, str(uuid.uuid4()))
|
|
162
175
|
|
|
163
|
-
def __append_retry_attempt_header(
|
|
176
|
+
def __append_retry_attempt_header(
|
|
177
|
+
self, client_call_details: "grpc.ClientCallDetails", attempt: int
|
|
178
|
+
) -> "grpc.ClientCallDetails":
|
|
164
179
|
return self.__append_metadata(client_call_details, self._ATTEMPT_METADATA_KEY, str(attempt), force=True)
|
|
165
180
|
|
|
166
181
|
@staticmethod
|
|
167
|
-
def __append_metadata(
|
|
182
|
+
def __append_metadata(
|
|
183
|
+
client_call_details: "grpc.ClientCallDetails", header: str, value: str, force: bool = False
|
|
184
|
+
) -> "grpc.ClientCallDetails":
|
|
168
185
|
metadata = []
|
|
169
186
|
if client_call_details.metadata is not None:
|
|
170
187
|
metadata = list(client_call_details.metadata)
|
yandexcloud/_sdk.py
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import inspect
|
|
2
|
-
from typing import Dict, Optional
|
|
2
|
+
from typing import TYPE_CHECKING, Any, Dict, Optional, Type, Union
|
|
3
3
|
|
|
4
4
|
import grpc
|
|
5
5
|
|
|
@@ -8,25 +8,57 @@ from yandexcloud._backoff import backoff_exponential_with_jitter
|
|
|
8
8
|
from yandexcloud._retry_interceptor import RetryInterceptor
|
|
9
9
|
from yandexcloud._wrappers import Wrappers
|
|
10
10
|
|
|
11
|
+
if TYPE_CHECKING:
|
|
12
|
+
import logging
|
|
13
|
+
|
|
14
|
+
import google.protobuf.message
|
|
15
|
+
|
|
16
|
+
from yandex.cloud.operation.operation_pb2 import Operation
|
|
17
|
+
from yandexcloud._operation_waiter import OperationWaiter
|
|
18
|
+
from yandexcloud.operations import OperationError, OperationResult
|
|
19
|
+
|
|
11
20
|
|
|
12
21
|
class SDK:
|
|
13
|
-
def __init__(
|
|
22
|
+
def __init__(
|
|
23
|
+
self,
|
|
24
|
+
interceptor: Union[
|
|
25
|
+
grpc.UnaryUnaryClientInterceptor,
|
|
26
|
+
grpc.UnaryStreamClientInterceptor,
|
|
27
|
+
grpc.StreamUnaryClientInterceptor,
|
|
28
|
+
grpc.StreamStreamClientInterceptor,
|
|
29
|
+
None,
|
|
30
|
+
] = None,
|
|
31
|
+
user_agent: Optional[str] = None,
|
|
32
|
+
endpoints: Optional[Dict[str, str]] = None,
|
|
33
|
+
token: Optional[str] = None,
|
|
34
|
+
iam_token: Optional[str] = None,
|
|
35
|
+
endpoint: Optional[str] = None,
|
|
36
|
+
service_account_key: Optional[Dict[str, str]] = None,
|
|
37
|
+
root_certificates: Optional[bytes] = None,
|
|
38
|
+
private_key: Optional[bytes] = None,
|
|
39
|
+
certificate_chain: Optional[bytes] = None,
|
|
40
|
+
**kwargs: str,
|
|
41
|
+
):
|
|
14
42
|
"""
|
|
15
43
|
API entry-point object.
|
|
16
44
|
|
|
17
45
|
:param interceptor: GRPC interceptor to be used instead of default RetryInterceptor
|
|
18
|
-
:type interceptor: Union[
|
|
19
|
-
UnaryUnaryClientInterceptor,
|
|
20
|
-
UnaryStreamClientInterceptor,
|
|
21
|
-
StreamUnaryClientInterceptor,
|
|
22
|
-
StreamStreamClientInterceptor
|
|
23
|
-
]
|
|
24
46
|
:param user_agent: String to prepend User-Agent metadata header for all GRPC requests made via SDK object
|
|
25
|
-
:type user_agent: Optional[str]
|
|
26
47
|
:param endpoints: Dict with services endpoints overrides. Example: {'vpc': 'new.vpc.endpoint:443'}
|
|
27
48
|
|
|
28
49
|
"""
|
|
29
|
-
self._channels = _channels.Channels(
|
|
50
|
+
self._channels = _channels.Channels(
|
|
51
|
+
user_agent,
|
|
52
|
+
endpoints,
|
|
53
|
+
token,
|
|
54
|
+
iam_token,
|
|
55
|
+
endpoint,
|
|
56
|
+
service_account_key,
|
|
57
|
+
root_certificates,
|
|
58
|
+
private_key,
|
|
59
|
+
certificate_chain,
|
|
60
|
+
**kwargs,
|
|
61
|
+
)
|
|
30
62
|
if interceptor is None:
|
|
31
63
|
interceptor = RetryInterceptor(
|
|
32
64
|
max_retry_count=5,
|
|
@@ -37,10 +69,19 @@ class SDK:
|
|
|
37
69
|
self.helpers = _helpers.Helpers(self)
|
|
38
70
|
self.wrappers = Wrappers(self)
|
|
39
71
|
|
|
40
|
-
def
|
|
41
|
-
self
|
|
42
|
-
|
|
43
|
-
|
|
72
|
+
def client(
|
|
73
|
+
self,
|
|
74
|
+
stub_ctor: Type,
|
|
75
|
+
interceptor: Union[
|
|
76
|
+
grpc.UnaryUnaryClientInterceptor,
|
|
77
|
+
grpc.UnaryStreamClientInterceptor,
|
|
78
|
+
grpc.StreamUnaryClientInterceptor,
|
|
79
|
+
grpc.StreamStreamClientInterceptor,
|
|
80
|
+
None,
|
|
81
|
+
] = None,
|
|
82
|
+
endpoint: Optional[str] = None,
|
|
83
|
+
insecure: bool = False,
|
|
84
|
+
) -> Any:
|
|
44
85
|
service = _service_for_ctor(stub_ctor)
|
|
45
86
|
channel = self._channels.channel(service, endpoint, insecure)
|
|
46
87
|
if interceptor is not None:
|
|
@@ -49,22 +90,29 @@ class SDK:
|
|
|
49
90
|
channel = grpc.intercept_channel(channel, self._default_interceptor)
|
|
50
91
|
return stub_ctor(channel)
|
|
51
92
|
|
|
52
|
-
def waiter(self, operation_id, timeout=None):
|
|
93
|
+
def waiter(self, operation_id: str, timeout: Optional[float] = None) -> "OperationWaiter":
|
|
53
94
|
return _operation_waiter.operation_waiter(self, operation_id, timeout)
|
|
54
95
|
|
|
55
|
-
def wait_operation_and_get_result(
|
|
96
|
+
def wait_operation_and_get_result(
|
|
97
|
+
self,
|
|
98
|
+
operation: "Operation",
|
|
99
|
+
response_type: Optional[Type["google.protobuf.message.Message"]] = None,
|
|
100
|
+
meta_type: Optional[Type["google.protobuf.message.Message"]] = None,
|
|
101
|
+
timeout: Optional[float] = None,
|
|
102
|
+
logger: Optional["logging.Logger"] = None,
|
|
103
|
+
) -> Union["OperationResult", "OperationError"]:
|
|
56
104
|
return _operation_waiter.get_operation_result(self, operation, response_type, meta_type, timeout, logger)
|
|
57
105
|
|
|
58
106
|
def create_operation_and_get_result(
|
|
59
107
|
self,
|
|
60
|
-
request,
|
|
61
|
-
service,
|
|
62
|
-
method_name,
|
|
63
|
-
response_type=None,
|
|
64
|
-
meta_type=None,
|
|
65
|
-
timeout=None,
|
|
66
|
-
logger=None,
|
|
67
|
-
):
|
|
108
|
+
request: Type["google.protobuf.message.Message"],
|
|
109
|
+
service: Any,
|
|
110
|
+
method_name: str,
|
|
111
|
+
response_type: Optional[Type["google.protobuf.message.Message"]] = None,
|
|
112
|
+
meta_type: Optional[Type["google.protobuf.message.Message"]] = None,
|
|
113
|
+
timeout: Optional[float] = None,
|
|
114
|
+
logger: Optional["logging.Logger"] = None,
|
|
115
|
+
) -> Union["OperationResult", "OperationError"]:
|
|
68
116
|
operation = getattr(self.client(service), method_name)(request)
|
|
69
117
|
return self.wait_operation_and_get_result(
|
|
70
118
|
operation,
|
|
@@ -75,17 +123,18 @@ class SDK:
|
|
|
75
123
|
)
|
|
76
124
|
|
|
77
125
|
|
|
78
|
-
def _service_for_ctor(stub_ctor):
|
|
126
|
+
def _service_for_ctor(stub_ctor: Any) -> str:
|
|
79
127
|
m = inspect.getmodule(stub_ctor)
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
128
|
+
if m is not None:
|
|
129
|
+
name = m.__name__
|
|
130
|
+
if not name.startswith("yandex.cloud"):
|
|
131
|
+
raise RuntimeError(f"Not a yandex.cloud service {stub_ctor}")
|
|
83
132
|
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
133
|
+
for k, v in _supported_modules:
|
|
134
|
+
if name.startswith(k):
|
|
135
|
+
return v
|
|
87
136
|
|
|
88
|
-
raise RuntimeError("Unknown service {}"
|
|
137
|
+
raise RuntimeError(f"Unknown service {stub_ctor}")
|
|
89
138
|
|
|
90
139
|
|
|
91
140
|
_supported_modules = [
|
|
@@ -1,8 +1,15 @@
|
|
|
1
|
+
from typing import TYPE_CHECKING
|
|
2
|
+
|
|
1
3
|
from yandexcloud._wrappers.dataproc import Dataproc, InitializationAction
|
|
2
4
|
|
|
5
|
+
if TYPE_CHECKING:
|
|
6
|
+
from yandexcloud._sdk import SDK
|
|
7
|
+
|
|
3
8
|
|
|
4
|
-
class Wrappers
|
|
5
|
-
def __init__(self, sdk):
|
|
9
|
+
class Wrappers:
|
|
10
|
+
def __init__(self, sdk: "SDK"):
|
|
11
|
+
# pylint: disable-next=invalid-name
|
|
6
12
|
self.Dataproc = Dataproc
|
|
7
13
|
self.Dataproc.sdk = sdk
|
|
14
|
+
# pylint: disable-next=invalid-name
|
|
8
15
|
self.InitializationAction = InitializationAction
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
# -*- coding: utf-8 -*-
|
|
2
2
|
# pylint: disable=no-member
|
|
3
|
+
# mypy: ignore-errors
|
|
3
4
|
import logging
|
|
4
5
|
import random
|
|
5
6
|
from typing import List, NamedTuple
|
|
@@ -32,7 +33,7 @@ class InitializationAction(NamedTuple):
|
|
|
32
33
|
)
|
|
33
34
|
|
|
34
35
|
|
|
35
|
-
class Dataproc
|
|
36
|
+
class Dataproc:
|
|
36
37
|
"""
|
|
37
38
|
A base hook for Yandex.Cloud Data Proc.
|
|
38
39
|
|
|
@@ -47,7 +48,7 @@ class Dataproc(object):
|
|
|
47
48
|
"""
|
|
48
49
|
|
|
49
50
|
def __init__(self, default_folder_id=None, default_public_ssh_key=None, logger=None, sdk=None):
|
|
50
|
-
self.sdk = sdk
|
|
51
|
+
self.sdk = sdk
|
|
51
52
|
self.log = logger
|
|
52
53
|
if not self.log:
|
|
53
54
|
self.log = logging.getLogger()
|
|
@@ -200,7 +201,7 @@ class Dataproc(object):
|
|
|
200
201
|
|
|
201
202
|
if not cluster_name:
|
|
202
203
|
random_int = random.randint(0, 999)
|
|
203
|
-
cluster_name = "dataproc-{random_int}"
|
|
204
|
+
cluster_name = f"dataproc-{random_int}"
|
|
204
205
|
|
|
205
206
|
if not subnet_id:
|
|
206
207
|
network_id = self.sdk.helpers.find_network_id(folder_id)
|
|
@@ -397,7 +398,7 @@ class Dataproc(object):
|
|
|
397
398
|
disk_type_id=disk_type,
|
|
398
399
|
)
|
|
399
400
|
|
|
400
|
-
self.log.info("Adding subcluster to cluster
|
|
401
|
+
self.log.info("Adding subcluster to cluster %s", cluster_id)
|
|
401
402
|
autoscaling_config = None
|
|
402
403
|
if max_hosts_count:
|
|
403
404
|
autoscaling_config = subcluster_pb.AutoscalingConfig(
|
|
@@ -439,7 +440,7 @@ class Dataproc(object):
|
|
|
439
440
|
if not cluster_id:
|
|
440
441
|
raise RuntimeError("Cluster id must be specified.")
|
|
441
442
|
|
|
442
|
-
self.log.info("Updating cluster
|
|
443
|
+
self.log.info("Updating cluster %s", cluster_id)
|
|
443
444
|
mask = FieldMask(paths=["description"])
|
|
444
445
|
request = cluster_service_pb.UpdateClusterRequest(
|
|
445
446
|
cluster_id=cluster_id,
|
|
@@ -464,7 +465,7 @@ class Dataproc(object):
|
|
|
464
465
|
if not cluster_id:
|
|
465
466
|
raise RuntimeError("Cluster id must be specified.")
|
|
466
467
|
|
|
467
|
-
self.log.info("Deleting cluster
|
|
468
|
+
self.log.info("Deleting cluster %s", cluster_id)
|
|
468
469
|
request = cluster_service_pb.DeleteClusterRequest(cluster_id=cluster_id)
|
|
469
470
|
return self.sdk.create_operation_and_get_result(
|
|
470
471
|
request,
|
|
@@ -507,7 +508,7 @@ class Dataproc(object):
|
|
|
507
508
|
raise RuntimeError("Cluster id must be specified.")
|
|
508
509
|
if (query and query_file_uri) or not (query or query_file_uri):
|
|
509
510
|
raise RuntimeError("Either query or query_file_uri must be specified.")
|
|
510
|
-
self.log.info("Running Hive job. Cluster ID:
|
|
511
|
+
self.log.info("Running Hive job. Cluster ID: %s", cluster_id)
|
|
511
512
|
|
|
512
513
|
hive_job = job_pb.HiveJob(
|
|
513
514
|
query_file_uri=query_file_uri,
|
|
@@ -574,7 +575,7 @@ class Dataproc(object):
|
|
|
574
575
|
cluster_id = cluster_id or self.cluster_id
|
|
575
576
|
if not cluster_id:
|
|
576
577
|
raise RuntimeError("Cluster id must be specified.")
|
|
577
|
-
self.log.info("Running Mapreduce job. Cluster ID:
|
|
578
|
+
self.log.info("Running Mapreduce job. Cluster ID: %s", cluster_id)
|
|
578
579
|
|
|
579
580
|
request = job_service_pb.CreateJobRequest(
|
|
580
581
|
cluster_id=cluster_id,
|
|
@@ -646,7 +647,7 @@ class Dataproc(object):
|
|
|
646
647
|
cluster_id = cluster_id or self.cluster_id
|
|
647
648
|
if not cluster_id:
|
|
648
649
|
raise RuntimeError("Cluster id must be specified.")
|
|
649
|
-
self.log.info("Running Spark job. Cluster ID:
|
|
650
|
+
self.log.info("Running Spark job. Cluster ID: %s", cluster_id)
|
|
650
651
|
|
|
651
652
|
request = job_service_pb.CreateJobRequest(
|
|
652
653
|
cluster_id=cluster_id,
|
|
@@ -721,7 +722,7 @@ class Dataproc(object):
|
|
|
721
722
|
cluster_id = cluster_id or self.cluster_id
|
|
722
723
|
if not cluster_id:
|
|
723
724
|
raise RuntimeError("Cluster id must be specified.")
|
|
724
|
-
self.log.info("Running Pyspark job. Cluster ID:
|
|
725
|
+
self.log.info("Running Pyspark job. Cluster ID: %s", cluster_id)
|
|
725
726
|
request = job_service_pb.CreateJobRequest(
|
|
726
727
|
cluster_id=cluster_id,
|
|
727
728
|
name=name,
|
yandexcloud/auth.py
CHANGED
|
@@ -1,14 +1,22 @@
|
|
|
1
|
+
from typing import Dict, Optional
|
|
2
|
+
|
|
1
3
|
from yandex.cloud.iam.v1.iam_token_service_pb2_grpc import IamTokenServiceStub
|
|
2
|
-
from yandexcloud import SDK
|
|
3
4
|
from yandexcloud._auth_fabric import (
|
|
4
5
|
YC_API_ENDPOINT,
|
|
5
6
|
IamTokenAuth,
|
|
6
7
|
MetadataAuth,
|
|
7
8
|
get_auth_token_requester,
|
|
8
9
|
)
|
|
10
|
+
from yandexcloud._sdk import SDK
|
|
9
11
|
|
|
10
12
|
|
|
11
|
-
def get_auth_token(
|
|
13
|
+
def get_auth_token(
|
|
14
|
+
token: Optional[str] = None,
|
|
15
|
+
service_account_key: Optional[Dict[str, str]] = None,
|
|
16
|
+
iam_token: Optional[str] = None,
|
|
17
|
+
metadata_addr: Optional[str] = None,
|
|
18
|
+
endpoint: Optional[str] = None,
|
|
19
|
+
) -> str:
|
|
12
20
|
if endpoint is None:
|
|
13
21
|
endpoint = YC_API_ENDPOINT
|
|
14
22
|
requester = get_auth_token_requester(
|