yandexcloud 0.337.0__py3-none-any.whl → 0.339.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.

Potentially problematic release.


This version of yandexcloud might be problematic. Click here for more details.

Files changed (230) hide show
  1. yandex/cloud/ai/assistants/v1/common_pb2.py +32 -27
  2. yandex/cloud/ai/assistants/v1/common_pb2.pyi +29 -2
  3. yandex/cloud/ai/dataset/v1/dataset_service_pb2.py +32 -32
  4. yandex/cloud/ai/dataset/v1/dataset_service_pb2.pyi +7 -1
  5. yandex/cloud/ai/tuning/v1/tuning_service_pb2.py +39 -3
  6. yandex/cloud/ai/tuning/v1/tuning_service_pb2.pyi +220 -0
  7. yandex/cloud/ai/tuning/v1/tuning_service_pb2_grpc.py +172 -0
  8. yandex/cloud/ai/tuning/v1/tuning_service_pb2_grpc.pyi +68 -0
  9. yandex/cloud/ai/tuning/v1/tuning_task_pb2.py +3 -3
  10. yandex/cloud/ai/tuning/v1/tuning_task_pb2.pyi +2 -0
  11. yandex/cloud/apploadbalancer/v1/load_balancer_pb2.py +50 -50
  12. yandex/cloud/apploadbalancer/v1/load_balancer_pb2.pyi +10 -2
  13. yandex/cloud/apploadbalancer/v1/load_balancer_service_pb2.py +86 -66
  14. yandex/cloud/apploadbalancer/v1/load_balancer_service_pb2.pyi +98 -2
  15. yandex/cloud/apploadbalancer/v1/load_balancer_service_pb2_grpc.py +88 -0
  16. yandex/cloud/apploadbalancer/v1/load_balancer_service_pb2_grpc.pyi +40 -0
  17. yandex/cloud/backup/v1/backup_service_pb2.py +44 -40
  18. yandex/cloud/backup/v1/backup_service_pb2.pyi +14 -2
  19. yandex/cloud/backup/v1/policy_pb2.py +56 -52
  20. yandex/cloud/backup/v1/policy_pb2.pyi +36 -5
  21. yandex/cloud/backup/v1/resource_pb2.py +21 -19
  22. yandex/cloud/backup/v1/resource_pb2.pyi +32 -2
  23. yandex/cloud/backup/v1/resource_service_pb2.py +30 -30
  24. yandex/cloud/backup/v1/resource_service_pb2.pyi +5 -1
  25. yandex/cloud/baremetal/__init__.py +0 -0
  26. yandex/cloud/baremetal/v1alpha/__init__.py +0 -0
  27. yandex/cloud/baremetal/v1alpha/configuration_pb2.py +42 -0
  28. yandex/cloud/baremetal/v1alpha/configuration_pb2.pyi +109 -0
  29. yandex/cloud/baremetal/v1alpha/configuration_pb2_grpc.py +24 -0
  30. yandex/cloud/baremetal/v1alpha/configuration_pb2_grpc.pyi +17 -0
  31. yandex/cloud/baremetal/v1alpha/configuration_service_pb2.py +49 -0
  32. yandex/cloud/baremetal/v1alpha/configuration_service_pb2.pyi +111 -0
  33. yandex/cloud/baremetal/v1alpha/configuration_service_pb2_grpc.py +148 -0
  34. yandex/cloud/baremetal/v1alpha/configuration_service_pb2_grpc.pyi +80 -0
  35. yandex/cloud/baremetal/v1alpha/dhcp_pb2.py +37 -0
  36. yandex/cloud/baremetal/v1alpha/dhcp_pb2.pyi +33 -0
  37. yandex/cloud/baremetal/v1alpha/dhcp_pb2_grpc.py +24 -0
  38. yandex/cloud/baremetal/v1alpha/dhcp_pb2_grpc.pyi +17 -0
  39. yandex/cloud/baremetal/v1alpha/disk_pb2.py +39 -0
  40. yandex/cloud/baremetal/v1alpha/disk_pb2.pyi +68 -0
  41. yandex/cloud/baremetal/v1alpha/disk_pb2_grpc.py +24 -0
  42. yandex/cloud/baremetal/v1alpha/disk_pb2_grpc.pyi +17 -0
  43. yandex/cloud/baremetal/v1alpha/hardware_pool_pb2.py +37 -0
  44. yandex/cloud/baremetal/v1alpha/hardware_pool_pb2.pyi +36 -0
  45. yandex/cloud/baremetal/v1alpha/hardware_pool_pb2_grpc.py +24 -0
  46. yandex/cloud/baremetal/v1alpha/hardware_pool_pb2_grpc.pyi +17 -0
  47. yandex/cloud/baremetal/v1alpha/hardware_pool_service_pb2.py +49 -0
  48. yandex/cloud/baremetal/v1alpha/hardware_pool_service_pb2.pyi +87 -0
  49. yandex/cloud/baremetal/v1alpha/hardware_pool_service_pb2_grpc.py +148 -0
  50. yandex/cloud/baremetal/v1alpha/hardware_pool_service_pb2_grpc.pyi +80 -0
  51. yandex/cloud/baremetal/v1alpha/image_pb2.py +44 -0
  52. yandex/cloud/baremetal/v1alpha/image_pb2.pyi +125 -0
  53. yandex/cloud/baremetal/v1alpha/image_pb2_grpc.py +24 -0
  54. yandex/cloud/baremetal/v1alpha/image_pb2_grpc.pyi +17 -0
  55. yandex/cloud/baremetal/v1alpha/image_service_pb2.py +108 -0
  56. yandex/cloud/baremetal/v1alpha/image_service_pb2.pyi +364 -0
  57. yandex/cloud/baremetal/v1alpha/image_service_pb2_grpc.py +327 -0
  58. yandex/cloud/baremetal/v1alpha/image_service_pb2_grpc.pyi +170 -0
  59. yandex/cloud/baremetal/v1alpha/private_subnet_pb2.py +47 -0
  60. yandex/cloud/baremetal/v1alpha/private_subnet_pb2.pyi +174 -0
  61. yandex/cloud/baremetal/v1alpha/private_subnet_pb2_grpc.py +24 -0
  62. yandex/cloud/baremetal/v1alpha/private_subnet_pb2_grpc.pyi +17 -0
  63. yandex/cloud/baremetal/v1alpha/private_subnet_service_pb2.py +112 -0
  64. yandex/cloud/baremetal/v1alpha/private_subnet_service_pb2.pyi +443 -0
  65. yandex/cloud/baremetal/v1alpha/private_subnet_service_pb2_grpc.py +327 -0
  66. yandex/cloud/baremetal/v1alpha/private_subnet_service_pb2_grpc.pyi +170 -0
  67. yandex/cloud/baremetal/v1alpha/public_subnet_pb2.py +45 -0
  68. yandex/cloud/baremetal/v1alpha/public_subnet_pb2.pyi +143 -0
  69. yandex/cloud/baremetal/v1alpha/public_subnet_pb2_grpc.py +24 -0
  70. yandex/cloud/baremetal/v1alpha/public_subnet_pb2_grpc.pyi +17 -0
  71. yandex/cloud/baremetal/v1alpha/public_subnet_service_pb2.py +106 -0
  72. yandex/cloud/baremetal/v1alpha/public_subnet_service_pb2.pyi +382 -0
  73. yandex/cloud/baremetal/v1alpha/public_subnet_service_pb2_grpc.py +327 -0
  74. yandex/cloud/baremetal/v1alpha/public_subnet_service_pb2_grpc.pyi +170 -0
  75. yandex/cloud/baremetal/v1alpha/server_pb2.py +54 -0
  76. yandex/cloud/baremetal/v1alpha/server_pb2.pyi +282 -0
  77. yandex/cloud/baremetal/v1alpha/server_pb2_grpc.py +24 -0
  78. yandex/cloud/baremetal/v1alpha/server_pb2_grpc.pyi +17 -0
  79. yandex/cloud/baremetal/v1alpha/server_service_pb2.py +217 -0
  80. yandex/cloud/baremetal/v1alpha/server_service_pb2.pyi +850 -0
  81. yandex/cloud/baremetal/v1alpha/server_service_pb2_grpc.py +589 -0
  82. yandex/cloud/baremetal/v1alpha/server_service_pb2_grpc.pyi +281 -0
  83. yandex/cloud/baremetal/v1alpha/storage_pb2.py +46 -0
  84. yandex/cloud/baremetal/v1alpha/storage_pb2.pyi +165 -0
  85. yandex/cloud/baremetal/v1alpha/storage_pb2_grpc.py +24 -0
  86. yandex/cloud/baremetal/v1alpha/storage_pb2_grpc.pyi +17 -0
  87. yandex/cloud/baremetal/v1alpha/storage_service_pb2.py +51 -0
  88. yandex/cloud/baremetal/v1alpha/storage_service_pb2.pyi +91 -0
  89. yandex/cloud/baremetal/v1alpha/storage_service_pb2_grpc.py +145 -0
  90. yandex/cloud/baremetal/v1alpha/storage_service_pb2_grpc.pyi +70 -0
  91. yandex/cloud/baremetal/v1alpha/vrf_pb2.py +42 -0
  92. yandex/cloud/baremetal/v1alpha/vrf_pb2.pyi +77 -0
  93. yandex/cloud/baremetal/v1alpha/vrf_pb2_grpc.py +24 -0
  94. yandex/cloud/baremetal/v1alpha/vrf_pb2_grpc.pyi +17 -0
  95. yandex/cloud/baremetal/v1alpha/vrf_service_pb2.py +106 -0
  96. yandex/cloud/baremetal/v1alpha/vrf_service_pb2.pyi +357 -0
  97. yandex/cloud/baremetal/v1alpha/vrf_service_pb2_grpc.py +327 -0
  98. yandex/cloud/baremetal/v1alpha/vrf_service_pb2_grpc.pyi +170 -0
  99. yandex/cloud/baremetal/v1alpha/zone_pb2.py +37 -0
  100. yandex/cloud/baremetal/v1alpha/zone_pb2.pyi +29 -0
  101. yandex/cloud/baremetal/v1alpha/zone_pb2_grpc.py +24 -0
  102. yandex/cloud/baremetal/v1alpha/zone_pb2_grpc.pyi +17 -0
  103. yandex/cloud/baremetal/v1alpha/zone_service_pb2.py +49 -0
  104. yandex/cloud/baremetal/v1alpha/zone_service_pb2.pyi +87 -0
  105. yandex/cloud/baremetal/v1alpha/zone_service_pb2_grpc.py +148 -0
  106. yandex/cloud/baremetal/v1alpha/zone_service_pb2_grpc.pyi +80 -0
  107. yandex/cloud/cloudregistry/v1/registry_service_pb2.py +40 -40
  108. yandex/cloud/dataproc/manager/v1/job_pb2.pyi +26 -26
  109. yandex/cloud/dataproc/manager/v1/job_service_pb2.pyi +7 -7
  110. yandex/cloud/dataproc/manager/v1/job_service_pb2_grpc.py +2 -2
  111. yandex/cloud/dataproc/manager/v1/job_service_pb2_grpc.pyi +6 -6
  112. yandex/cloud/dataproc/manager/v1/manager_service_pb2.pyi +2 -2
  113. yandex/cloud/dataproc/manager/v1/manager_service_pb2_grpc.py +3 -3
  114. yandex/cloud/dataproc/manager/v1/manager_service_pb2_grpc.pyi +3 -3
  115. yandex/cloud/dataproc/v1/cluster_pb2.pyi +5 -5
  116. yandex/cloud/dataproc/v1/cluster_service_pb2.pyi +13 -13
  117. yandex/cloud/dataproc/v1/cluster_service_pb2_grpc.py +4 -4
  118. yandex/cloud/dataproc/v1/cluster_service_pb2_grpc.pyi +6 -6
  119. yandex/cloud/dataproc/v1/job_pb2.pyi +15 -15
  120. yandex/cloud/dataproc/v1/job_service_pb2.pyi +3 -3
  121. yandex/cloud/dataproc/v1/job_service_pb2_grpc.py +4 -4
  122. yandex/cloud/dataproc/v1/job_service_pb2_grpc.pyi +6 -6
  123. yandex/cloud/dataproc/v1/resource_preset_pb2.pyi +2 -2
  124. yandex/cloud/dataproc/v1/subcluster_pb2.pyi +11 -11
  125. yandex/cloud/dataproc/v1/subcluster_service_pb2.pyi +3 -3
  126. yandex/cloud/dataproc/v1/subcluster_service_pb2_grpc.py +3 -3
  127. yandex/cloud/dataproc/v1/subcluster_service_pb2_grpc.pyi +3 -3
  128. yandex/cloud/iam/v1/api_key_pb2.pyi +3 -1
  129. yandex/cloud/iam/v1/api_key_service_pb2.pyi +3 -1
  130. yandex/cloud/iam/v1/key_service_pb2.pyi +0 -2
  131. yandex/cloud/iam/v1/workload/oidc/federation_service_pb2.py +32 -25
  132. yandex/cloud/iam/v1/workload/oidc/federation_service_pb2_grpc.py +133 -0
  133. yandex/cloud/iam/v1/workload/oidc/federation_service_pb2_grpc.pyi +61 -0
  134. yandex/cloud/k8s/v1/cluster_pb2.py +40 -30
  135. yandex/cloud/k8s/v1/cluster_pb2.pyi +94 -2
  136. yandex/cloud/k8s/v1/cluster_service_pb2.py +54 -42
  137. yandex/cloud/k8s/v1/cluster_service_pb2.pyi +70 -4
  138. yandex/cloud/k8s/v1/resource_preset_pb2.py +37 -0
  139. yandex/cloud/k8s/v1/resource_preset_pb2.pyi +43 -0
  140. yandex/cloud/k8s/v1/resource_preset_pb2_grpc.py +24 -0
  141. yandex/cloud/k8s/v1/resource_preset_pb2_grpc.pyi +17 -0
  142. yandex/cloud/k8s/v1/resource_preset_service_pb2.py +53 -0
  143. yandex/cloud/k8s/v1/resource_preset_service_pb2.pyi +81 -0
  144. yandex/cloud/k8s/v1/resource_preset_service_pb2_grpc.py +146 -0
  145. yandex/cloud/k8s/v1/resource_preset_service_pb2_grpc.pyi +71 -0
  146. yandex/cloud/mdb/mysql/v1/backup_pb2.py +6 -6
  147. yandex/cloud/mdb/mysql/v1/backup_pb2.pyi +5 -1
  148. yandex/cloud/mdb/mysql/v1/config/mysql5_7_pb2.py +26 -20
  149. yandex/cloud/mdb/mysql/v1/config/mysql5_7_pb2.pyi +73 -2
  150. yandex/cloud/mdb/mysql/v1/config/mysql8_0_pb2.py +26 -20
  151. yandex/cloud/mdb/mysql/v1/config/mysql8_0_pb2.pyi +100 -2
  152. yandex/cloud/mdb/opensearch/v1/backup_pb2.py +30 -3
  153. yandex/cloud/mdb/opensearch/v1/backup_pb2.pyi +162 -0
  154. yandex/cloud/mdb/opensearch/v1/cluster_pb2.py +46 -45
  155. yandex/cloud/mdb/opensearch/v1/cluster_pb2.pyi +9 -2
  156. yandex/cloud/mdb/opensearch/v1/cluster_service_pb2.py +88 -70
  157. yandex/cloud/mdb/opensearch/v1/cluster_service_pb2.pyi +102 -4
  158. yandex/cloud/mdb/opensearch/v1/cluster_service_pb2_grpc.py +89 -0
  159. yandex/cloud/mdb/opensearch/v1/cluster_service_pb2_grpc.pyi +49 -3
  160. yandex/cloud/mdb/postgresql/v1/config/host10_1c_pb2.py +23 -23
  161. yandex/cloud/mdb/postgresql/v1/config/host10_pb2.py +23 -23
  162. yandex/cloud/mdb/postgresql/v1/config/host11_1c_pb2.py +23 -23
  163. yandex/cloud/mdb/postgresql/v1/config/host11_pb2.py +23 -23
  164. yandex/cloud/mdb/postgresql/v1/config/host12_1c_pb2.py +23 -23
  165. yandex/cloud/mdb/postgresql/v1/config/host12_pb2.py +23 -23
  166. yandex/cloud/mdb/postgresql/v1/config/host13_1c_pb2.py +23 -23
  167. yandex/cloud/mdb/postgresql/v1/config/host13_pb2.py +23 -23
  168. yandex/cloud/mdb/postgresql/v1/config/host14_1c_pb2.py +23 -23
  169. yandex/cloud/mdb/postgresql/v1/config/host14_pb2.py +23 -23
  170. yandex/cloud/mdb/postgresql/v1/config/host15_1c_pb2.py +23 -23
  171. yandex/cloud/mdb/postgresql/v1/config/host15_pb2.py +23 -23
  172. yandex/cloud/mdb/postgresql/v1/config/host16_1c_pb2.py +25 -25
  173. yandex/cloud/mdb/postgresql/v1/config/host16_pb2.py +25 -25
  174. yandex/cloud/mdb/postgresql/v1/config/host9_6_pb2.py +23 -23
  175. yandex/cloud/mdb/postgresql/v1/config/postgresql10_1c_pb2.py +35 -35
  176. yandex/cloud/mdb/postgresql/v1/config/postgresql10_pb2.py +35 -35
  177. yandex/cloud/mdb/postgresql/v1/config/postgresql11_1c_pb2.py +35 -35
  178. yandex/cloud/mdb/postgresql/v1/config/postgresql11_pb2.py +35 -35
  179. yandex/cloud/mdb/postgresql/v1/config/postgresql12_1c_pb2.py +37 -37
  180. yandex/cloud/mdb/postgresql/v1/config/postgresql12_pb2.py +37 -37
  181. yandex/cloud/mdb/postgresql/v1/config/postgresql13_1c_pb2.py +37 -37
  182. yandex/cloud/mdb/postgresql/v1/config/postgresql13_pb2.py +37 -37
  183. yandex/cloud/mdb/postgresql/v1/config/postgresql14_1c_pb2.py +37 -37
  184. yandex/cloud/mdb/postgresql/v1/config/postgresql14_pb2.py +37 -37
  185. yandex/cloud/mdb/postgresql/v1/config/postgresql15_1c_pb2.py +37 -37
  186. yandex/cloud/mdb/postgresql/v1/config/postgresql15_pb2.py +37 -37
  187. yandex/cloud/mdb/postgresql/v1/config/postgresql16_1c_pb2.py +37 -37
  188. yandex/cloud/mdb/postgresql/v1/config/postgresql16_pb2.py +37 -37
  189. yandex/cloud/mdb/postgresql/v1/config/postgresql9_6_pb2.py +29 -29
  190. yandex/cloud/monitoring/v3/unit_format_pb2.py +2 -2
  191. yandex/cloud/monitoring/v3/unit_format_pb2.pyi +16 -0
  192. yandex/cloud/searchapi/v2/gen_search_service_pb2.py +28 -22
  193. yandex/cloud/searchapi/v2/search_query_pb2.py +8 -8
  194. yandex/cloud/searchapi/v2/search_query_pb2.pyi +8 -0
  195. yandex/cloud/serverless/eventrouter/v1/event_service_pb2.py +11 -3
  196. yandex/cloud/serverless/eventrouter/v1/event_service_pb2.pyi +24 -0
  197. yandex/cloud/serverless/eventrouter/v1/event_service_pb2_grpc.py +44 -0
  198. yandex/cloud/serverless/eventrouter/v1/event_service_pb2_grpc.pyi +20 -0
  199. yandex/cloud/spark/__init__.py +0 -0
  200. yandex/cloud/spark/v1/__init__.py +0 -0
  201. yandex/cloud/spark/v1/cluster_pb2.py +100 -0
  202. yandex/cloud/spark/v1/cluster_pb2.pyi +444 -0
  203. yandex/cloud/spark/v1/cluster_pb2_grpc.py +24 -0
  204. yandex/cloud/spark/v1/cluster_pb2_grpc.pyi +17 -0
  205. yandex/cloud/spark/v1/cluster_service_pb2.py +124 -0
  206. yandex/cloud/spark/v1/cluster_service_pb2.pyi +333 -0
  207. yandex/cloud/spark/v1/cluster_service_pb2_grpc.py +366 -0
  208. yandex/cloud/spark/v1/cluster_service_pb2_grpc.pyi +169 -0
  209. yandex/cloud/spark/v1/job_pb2.py +56 -0
  210. yandex/cloud/spark/v1/job_pb2.pyi +346 -0
  211. yandex/cloud/spark/v1/job_pb2_grpc.py +24 -0
  212. yandex/cloud/spark/v1/job_pb2_grpc.pyi +17 -0
  213. yandex/cloud/spark/v1/job_service_pb2.py +97 -0
  214. yandex/cloud/spark/v1/job_service_pb2.pyi +224 -0
  215. yandex/cloud/spark/v1/job_service_pb2_grpc.py +279 -0
  216. yandex/cloud/spark/v1/job_service_pb2_grpc.pyi +132 -0
  217. yandex/cloud/spark/v1/maintenance_pb2.py +53 -0
  218. yandex/cloud/spark/v1/maintenance_pb2.pyi +123 -0
  219. yandex/cloud/spark/v1/maintenance_pb2_grpc.py +24 -0
  220. yandex/cloud/spark/v1/maintenance_pb2_grpc.pyi +17 -0
  221. yandexcloud/__init__.py +2 -2
  222. yandexcloud/_operation_waiter.py +17 -19
  223. yandexcloud/_retry_policy.py +17 -3
  224. yandexcloud/_wrappers/dataproc/__init__.py +39 -0
  225. {yandexcloud-0.337.0.dist-info → yandexcloud-0.339.0.dist-info}/METADATA +9 -9
  226. {yandexcloud-0.337.0.dist-info → yandexcloud-0.339.0.dist-info}/RECORD +230 -118
  227. {yandexcloud-0.337.0.dist-info → yandexcloud-0.339.0.dist-info}/WHEEL +1 -1
  228. {yandexcloud-0.337.0.dist-info → yandexcloud-0.339.0.dist-info}/AUTHORS +0 -0
  229. {yandexcloud-0.337.0.dist-info → yandexcloud-0.339.0.dist-info}/LICENSE +0 -0
  230. {yandexcloud-0.337.0.dist-info → yandexcloud-0.339.0.dist-info}/top_level.txt +0 -0
@@ -0,0 +1,123 @@
1
+ """
2
+ @generated by mypy-protobuf. Do not edit manually!
3
+ isort:skip_file
4
+ """
5
+
6
+ import builtins
7
+ import google.protobuf.descriptor
8
+ import google.protobuf.internal.enum_type_wrapper
9
+ import google.protobuf.message
10
+ import google.protobuf.timestamp_pb2
11
+ import sys
12
+ import typing
13
+
14
+ if sys.version_info >= (3, 10):
15
+ import typing as typing_extensions
16
+ else:
17
+ import typing_extensions
18
+
19
+ DESCRIPTOR: google.protobuf.descriptor.FileDescriptor
20
+
21
+ @typing.final
22
+ class MaintenanceWindow(google.protobuf.message.Message):
23
+ DESCRIPTOR: google.protobuf.descriptor.Descriptor
24
+
25
+ ANYTIME_FIELD_NUMBER: builtins.int
26
+ WEEKLY_MAINTENANCE_WINDOW_FIELD_NUMBER: builtins.int
27
+ @property
28
+ def anytime(self) -> global___AnytimeMaintenanceWindow: ...
29
+ @property
30
+ def weekly_maintenance_window(self) -> global___WeeklyMaintenanceWindow: ...
31
+ def __init__(
32
+ self,
33
+ *,
34
+ anytime: global___AnytimeMaintenanceWindow | None = ...,
35
+ weekly_maintenance_window: global___WeeklyMaintenanceWindow | None = ...,
36
+ ) -> None: ...
37
+ def HasField(self, field_name: typing.Literal["anytime", b"anytime", "policy", b"policy", "weekly_maintenance_window", b"weekly_maintenance_window"]) -> builtins.bool: ...
38
+ def ClearField(self, field_name: typing.Literal["anytime", b"anytime", "policy", b"policy", "weekly_maintenance_window", b"weekly_maintenance_window"]) -> None: ...
39
+ def WhichOneof(self, oneof_group: typing.Literal["policy", b"policy"]) -> typing.Literal["anytime", "weekly_maintenance_window"] | None: ...
40
+
41
+ global___MaintenanceWindow = MaintenanceWindow
42
+
43
+ @typing.final
44
+ class AnytimeMaintenanceWindow(google.protobuf.message.Message):
45
+ DESCRIPTOR: google.protobuf.descriptor.Descriptor
46
+
47
+ def __init__(
48
+ self,
49
+ ) -> None: ...
50
+
51
+ global___AnytimeMaintenanceWindow = AnytimeMaintenanceWindow
52
+
53
+ @typing.final
54
+ class WeeklyMaintenanceWindow(google.protobuf.message.Message):
55
+ DESCRIPTOR: google.protobuf.descriptor.Descriptor
56
+
57
+ class _WeekDay:
58
+ ValueType = typing.NewType("ValueType", builtins.int)
59
+ V: typing_extensions.TypeAlias = ValueType
60
+
61
+ class _WeekDayEnumTypeWrapper(google.protobuf.internal.enum_type_wrapper._EnumTypeWrapper[WeeklyMaintenanceWindow._WeekDay.ValueType], builtins.type):
62
+ DESCRIPTOR: google.protobuf.descriptor.EnumDescriptor
63
+ WEEK_DAY_UNSPECIFIED: WeeklyMaintenanceWindow._WeekDay.ValueType # 0
64
+ MON: WeeklyMaintenanceWindow._WeekDay.ValueType # 1
65
+ TUE: WeeklyMaintenanceWindow._WeekDay.ValueType # 2
66
+ WED: WeeklyMaintenanceWindow._WeekDay.ValueType # 3
67
+ THU: WeeklyMaintenanceWindow._WeekDay.ValueType # 4
68
+ FRI: WeeklyMaintenanceWindow._WeekDay.ValueType # 5
69
+ SAT: WeeklyMaintenanceWindow._WeekDay.ValueType # 6
70
+ SUN: WeeklyMaintenanceWindow._WeekDay.ValueType # 7
71
+
72
+ class WeekDay(_WeekDay, metaclass=_WeekDayEnumTypeWrapper): ...
73
+ WEEK_DAY_UNSPECIFIED: WeeklyMaintenanceWindow.WeekDay.ValueType # 0
74
+ MON: WeeklyMaintenanceWindow.WeekDay.ValueType # 1
75
+ TUE: WeeklyMaintenanceWindow.WeekDay.ValueType # 2
76
+ WED: WeeklyMaintenanceWindow.WeekDay.ValueType # 3
77
+ THU: WeeklyMaintenanceWindow.WeekDay.ValueType # 4
78
+ FRI: WeeklyMaintenanceWindow.WeekDay.ValueType # 5
79
+ SAT: WeeklyMaintenanceWindow.WeekDay.ValueType # 6
80
+ SUN: WeeklyMaintenanceWindow.WeekDay.ValueType # 7
81
+
82
+ DAY_FIELD_NUMBER: builtins.int
83
+ HOUR_FIELD_NUMBER: builtins.int
84
+ day: global___WeeklyMaintenanceWindow.WeekDay.ValueType
85
+ hour: builtins.int
86
+ """Hour of the day in UTC."""
87
+ def __init__(
88
+ self,
89
+ *,
90
+ day: global___WeeklyMaintenanceWindow.WeekDay.ValueType = ...,
91
+ hour: builtins.int = ...,
92
+ ) -> None: ...
93
+ def ClearField(self, field_name: typing.Literal["day", b"day", "hour", b"hour"]) -> None: ...
94
+
95
+ global___WeeklyMaintenanceWindow = WeeklyMaintenanceWindow
96
+
97
+ @typing.final
98
+ class MaintenanceOperation(google.protobuf.message.Message):
99
+ DESCRIPTOR: google.protobuf.descriptor.Descriptor
100
+
101
+ INFO_FIELD_NUMBER: builtins.int
102
+ DELAYED_UNTIL_FIELD_NUMBER: builtins.int
103
+ LATEST_MAINTENANCE_TIME_FIELD_NUMBER: builtins.int
104
+ NEXT_MAINTENANCE_WINDOW_TIME_FIELD_NUMBER: builtins.int
105
+ info: builtins.str
106
+ @property
107
+ def delayed_until(self) -> google.protobuf.timestamp_pb2.Timestamp: ...
108
+ @property
109
+ def latest_maintenance_time(self) -> google.protobuf.timestamp_pb2.Timestamp: ...
110
+ @property
111
+ def next_maintenance_window_time(self) -> google.protobuf.timestamp_pb2.Timestamp: ...
112
+ def __init__(
113
+ self,
114
+ *,
115
+ info: builtins.str = ...,
116
+ delayed_until: google.protobuf.timestamp_pb2.Timestamp | None = ...,
117
+ latest_maintenance_time: google.protobuf.timestamp_pb2.Timestamp | None = ...,
118
+ next_maintenance_window_time: google.protobuf.timestamp_pb2.Timestamp | None = ...,
119
+ ) -> None: ...
120
+ def HasField(self, field_name: typing.Literal["delayed_until", b"delayed_until", "latest_maintenance_time", b"latest_maintenance_time", "next_maintenance_window_time", b"next_maintenance_window_time"]) -> builtins.bool: ...
121
+ def ClearField(self, field_name: typing.Literal["delayed_until", b"delayed_until", "info", b"info", "latest_maintenance_time", b"latest_maintenance_time", "next_maintenance_window_time", b"next_maintenance_window_time"]) -> None: ...
122
+
123
+ global___MaintenanceOperation = MaintenanceOperation
@@ -0,0 +1,24 @@
1
+ # Generated by the gRPC Python protocol compiler plugin. DO NOT EDIT!
2
+ """Client and server classes corresponding to protobuf-defined services."""
3
+ import grpc
4
+ import warnings
5
+
6
+
7
+ GRPC_GENERATED_VERSION = '1.70.0'
8
+ GRPC_VERSION = grpc.__version__
9
+ _version_not_supported = False
10
+
11
+ try:
12
+ from grpc._utilities import first_version_is_lower
13
+ _version_not_supported = first_version_is_lower(GRPC_VERSION, GRPC_GENERATED_VERSION)
14
+ except ImportError:
15
+ _version_not_supported = True
16
+
17
+ if _version_not_supported:
18
+ raise RuntimeError(
19
+ f'The grpc package installed is at version {GRPC_VERSION},'
20
+ + f' but the generated code in yandex/cloud/spark/v1/maintenance_pb2_grpc.py depends on'
21
+ + f' grpcio>={GRPC_GENERATED_VERSION}.'
22
+ + f' Please upgrade your grpc module to grpcio>={GRPC_GENERATED_VERSION}'
23
+ + f' or downgrade your generated code using grpcio-tools<={GRPC_VERSION}.'
24
+ )
@@ -0,0 +1,17 @@
1
+ """
2
+ @generated by mypy-protobuf. Do not edit manually!
3
+ isort:skip_file
4
+ """
5
+
6
+ import abc
7
+ import collections.abc
8
+ import grpc
9
+ import grpc.aio
10
+ import typing
11
+
12
+ _T = typing.TypeVar("_T")
13
+
14
+ class _MaybeAsyncIterator(collections.abc.AsyncIterator[_T], collections.abc.Iterator[_T], metaclass=abc.ABCMeta): ...
15
+
16
+ class _ServicerContext(grpc.ServicerContext, grpc.aio.ServicerContext): # type: ignore[misc, type-arg]
17
+ ...
yandexcloud/__init__.py CHANGED
@@ -8,7 +8,7 @@ from yandexcloud._backoff import (
8
8
  default_backoff,
9
9
  )
10
10
  from yandexcloud._retry_interceptor import RetryInterceptor
11
- from yandexcloud._retry_policy import RetryPolicy
11
+ from yandexcloud._retry_policy import RetryPolicy, ThrottlingMode
12
12
  from yandexcloud._sdk import SDK
13
13
 
14
- __version__ = "0.337.0"
14
+ __version__ = "0.339.0"
@@ -63,44 +63,42 @@ def get_operation_result(
63
63
  operation_result: OperationResult[ResponseType, MetaType] = OperationResult(operation)
64
64
  created_at = datetime.fromtimestamp(operation.created_at.seconds)
65
65
  message = (
66
- "Running Yandex.Cloud operation. ID: {id}. "
67
- "Description: {description}. Created at: {created_at}. "
68
- "Created by: {created_by}."
69
- )
70
- message = message.format(
71
- id=operation.id,
72
- description=operation.description,
73
- created_at=created_at,
74
- created_by=operation.created_by,
66
+ f"Running Yandex.Cloud operation. ID: {operation.id}. "
67
+ f"Description: {operation.description}. Created at: {created_at}. "
68
+ f"Created by: {operation.created_by}."
75
69
  )
70
+
76
71
  if meta_type and meta_type is not Empty:
77
72
  unpacked_meta = meta_type()
78
73
  operation.metadata.Unpack(unpacked_meta)
79
74
  operation_result.meta = unpacked_meta
80
75
  message += f" Meta: {unpacked_meta}."
76
+
81
77
  logger.info(message)
78
+
82
79
  result = wait_for_operation(sdk, operation.id, timeout=timeout)
83
80
  if result is None:
84
- return OperationError(message="Unexpected operation result", operation_result=OperationResult(operation))
81
+ raise OperationError(message="Unexpected operation result", operation_result=operation_result)
82
+
85
83
  if result.error and result.error.code:
86
84
  error_message = (
87
- "Error Yandex.Cloud operation. ID: {id}. Error code: {code}. Details: {details}. Message: {message}."
88
- )
89
- error_message = error_message.format(
90
- id=result.id,
91
- code=result.error.code,
92
- details=result.error.details,
93
- message=result.error.message,
85
+ f"Error Yandex.Cloud operation. ID: {result.id}. "
86
+ f"Error code: {result.error.code}. "
87
+ f"Details: {result.error.details}. "
88
+ f"Message: {result.error.message}. "
89
+ f"Meta: {operation_result.meta}."
94
90
  )
95
91
  logger.error(error_message)
96
- raise OperationError(message=error_message, operation_result=OperationResult(operation))
92
+ raise OperationError(message=error_message, operation_result=operation_result)
97
93
 
98
94
  log_message = f"Done Yandex.Cloud operation. ID: {operation.id}."
99
95
  if response_type and response_type is not Empty:
100
96
  unpacked_response = response_type()
101
97
  result.response.Unpack(unpacked_response)
102
98
  operation_result.response = unpacked_response
103
- log_message += f" Response: {unpacked_response}."
99
+ log_message += f" Response: {operation_result.response}."
100
+ log_message += f" Meta: {operation_result.meta}."
101
+
104
102
  logger.info(log_message)
105
103
  return operation_result
106
104
 
@@ -1,14 +1,28 @@
1
1
  import json
2
- from typing import Tuple
2
+ from enum import Enum
3
+ from typing import Any, Dict, Tuple
3
4
 
4
5
  import grpc
5
6
 
6
7
 
8
+ class ThrottlingMode(str, Enum):
9
+ PERSISTENT = "persistent"
10
+ TEMPORARY = "temporary"
11
+
12
+
13
+ def get_throttling_policy(throttling_mode: ThrottlingMode) -> Dict[str, Any]:
14
+ if throttling_mode == ThrottlingMode.PERSISTENT:
15
+ return {"maxTokens": 100, "tokenRatio": 0.1}
16
+
17
+ return {"maxTokens": 6, "tokenRatio": 0.1}
18
+
19
+
7
20
  class RetryPolicy:
8
21
  def __init__(
9
22
  self,
10
23
  max_attempts: int = 4,
11
24
  status_codes: Tuple["grpc.StatusCode"] = (grpc.StatusCode.UNAVAILABLE,),
25
+ throttling_mode: ThrottlingMode = ThrottlingMode.TEMPORARY,
12
26
  ):
13
27
  self.__policy = {
14
28
  "methodConfig": [
@@ -21,10 +35,10 @@ class RetryPolicy:
21
35
  "backoffMultiplier": 2,
22
36
  "retryableStatusCodes": [status.name for status in status_codes],
23
37
  },
38
+ "waitForReady": True,
24
39
  }
25
40
  ],
26
- "retryThrottling": {"maxTokens": 100, "tokenRatio": 0.1},
27
- "waitForReady": True,
41
+ "retryThrottling": get_throttling_policy(throttling_mode),
28
42
  }
29
43
 
30
44
  def to_json(self) -> str:
@@ -474,6 +474,45 @@ class Dataproc:
474
474
  meta_type=cluster_service_pb.DeleteClusterMetadata,
475
475
  )
476
476
 
477
+ def stop_cluster(self, cluster_id=None, decommission_timeout=0):
478
+ """
479
+ Stop Yandex.Cloud Data Proc cluster.
480
+ :param cluster_id: ID of the cluster to stop.
481
+ :type cluster_id: str
482
+ :param decommission_timeout: Timeout to gracefully decommission nodes during downscaling. In seconds.
483
+ :type decommission_timeout: int
484
+ """
485
+ cluster_id = cluster_id or self.cluster_id
486
+ if not cluster_id:
487
+ raise RuntimeError("Cluster id must be specified.")
488
+
489
+ request = cluster_service_pb.StopClusterRequest(
490
+ cluster_id=cluster_id, decommission_timeout=decommission_timeout
491
+ )
492
+ return self.sdk.create_operation_and_get_result(
493
+ request,
494
+ service=cluster_service_grpc_pb.ClusterServiceStub,
495
+ method_name="Stop",
496
+ meta_type=cluster_service_pb.StopClusterMetadata,
497
+ )
498
+
499
+ def start_cluster(self, cluster_id=None):
500
+ """
501
+ Start Yandex.Cloud Data Proc cluster.
502
+ :param cluster_id: ID of the cluster to start.
503
+ :type cluster_id: str
504
+ """
505
+ cluster_id = cluster_id or self.cluster_id
506
+ if not cluster_id:
507
+ raise RuntimeError("Cluster id must be specified.")
508
+ request = cluster_service_pb.StartClusterRequest(cluster_id=cluster_id)
509
+ return self.sdk.create_operation_and_get_result(
510
+ request,
511
+ service=cluster_service_grpc_pb.ClusterServiceStub,
512
+ method_name="Start",
513
+ meta_type=cluster_service_pb.StartClusterMetadata,
514
+ )
515
+
477
516
  def create_hive_job(
478
517
  self,
479
518
  query=None,
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.2
2
2
  Name: yandexcloud
3
- Version: 0.337.0
3
+ Version: 0.339.0
4
4
  Summary: The Yandex Cloud official SDK
5
5
  Author-email: Yandex LLC <cloud@support.yandex.ru>
6
6
  License: MIT
@@ -185,22 +185,22 @@ set_up_yc_api_endpoint(kz_region_endpoint)
185
185
  ```
186
186
 
187
187
  ### Retries
188
- If you want to retry SDK requests, build SDK with `retry_policy` field using `RetryPolicy` class:
188
+ SDK provide built-in retry policy, that supports [exponential backoff and jitter](https://aws.amazon.com/ru/blogs/architecture/exponential-backoff-and-jitter/), and also [retry budget](https://github.com/grpc/proposal/blob/master/A6-client-retries.md#throttling-retry-attempts-and-hedged-rpcs). It's necessary to avoid retry amplification.
189
189
 
190
190
  ```python
191
191
  import grpc
192
192
  from yandexcloud import SDK, RetryPolicy
193
193
 
194
- sdk = SDK(retry_policy=RetryPolicy(max_attempts=2, status_codes=(grpc.StatusCode.UNAVAILABLE,)))
194
+ sdk = SDK(retry_policy=RetryPolicy())
195
195
  ```
196
196
 
197
- It's **strongly recommended** to use default settings of RetryPolicy to avoid retry amplification:
198
- ```python
199
- import grpc
200
- from yandexcloud import SDK, RetryPolicy
197
+ SDK provide different modes for retry throttling policy:
198
+
199
+ * `persistent` is suitable when you use SDK in any long-lived application, when SDK instance will live long enough for manage budget;
200
+ * `temporary` is suitable when you use SDK in any short-lived application, e.g. scripts or CI/CD.
201
+
202
+ By default, SDK will use temporary mode, but you can change it through `throttling_mode` argument.
201
203
 
202
- sdk = SDK(retry_policy=RetryPolicy())
203
- ```
204
204
 
205
205
  ## Contributing
206
206
  ### Dependencies