gcore 0.10.0__py3-none-any.whl → 0.11.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 gcore might be problematic. Click here for more details.

Files changed (319) hide show
  1. gcore/_base_client.py +3 -3
  2. gcore/_client.py +18 -0
  3. gcore/_compat.py +48 -48
  4. gcore/_models.py +41 -41
  5. gcore/_types.py +35 -1
  6. gcore/_utils/__init__.py +9 -2
  7. gcore/_utils/_compat.py +45 -0
  8. gcore/_utils/_datetime_parse.py +136 -0
  9. gcore/_utils/_transform.py +11 -1
  10. gcore/_utils/_typing.py +6 -1
  11. gcore/_utils/_utils.py +0 -1
  12. gcore/_version.py +1 -1
  13. gcore/resources/__init__.py +28 -0
  14. gcore/resources/cloud/__init__.py +14 -0
  15. gcore/resources/cloud/audit_logs.py +3 -3
  16. gcore/resources/cloud/baremetal/images.py +3 -4
  17. gcore/resources/cloud/baremetal/servers.py +16 -4
  18. gcore/resources/cloud/cloud.py +32 -0
  19. gcore/resources/cloud/cost_reports.py +24 -16
  20. gcore/resources/cloud/file_shares/access_rules.py +2 -2
  21. gcore/resources/cloud/file_shares/file_shares.py +30 -14
  22. gcore/resources/cloud/floating_ips.py +196 -4
  23. gcore/resources/cloud/gpu_baremetal_clusters/flavors.py +1 -1
  24. gcore/resources/cloud/gpu_baremetal_clusters/gpu_baremetal_clusters.py +166 -190
  25. gcore/resources/cloud/gpu_baremetal_clusters/servers.py +268 -12
  26. gcore/resources/cloud/inference/__init__.py +14 -14
  27. gcore/resources/cloud/inference/applications/__init__.py +47 -0
  28. gcore/resources/cloud/inference/applications/applications.py +134 -0
  29. gcore/resources/cloud/inference/applications/deployments.py +649 -0
  30. gcore/resources/cloud/inference/applications/templates.py +238 -0
  31. gcore/resources/cloud/inference/deployments/deployments.py +41 -22
  32. gcore/resources/cloud/inference/inference.py +32 -32
  33. gcore/resources/cloud/inference/registry_credentials.py +8 -9
  34. gcore/resources/cloud/instances/images.py +4 -4
  35. gcore/resources/cloud/instances/instances.py +254 -4
  36. gcore/resources/cloud/instances/interfaces.py +544 -0
  37. gcore/resources/cloud/k8s/__init__.py +47 -0
  38. gcore/resources/cloud/k8s/clusters/__init__.py +47 -0
  39. gcore/resources/cloud/k8s/clusters/clusters.py +1391 -0
  40. gcore/resources/cloud/k8s/clusters/nodes.py +291 -0
  41. gcore/resources/cloud/k8s/clusters/pools/__init__.py +33 -0
  42. gcore/resources/cloud/k8s/clusters/pools/nodes.py +303 -0
  43. gcore/resources/cloud/k8s/clusters/pools/pools.py +870 -0
  44. gcore/resources/cloud/k8s/flavors.py +209 -0
  45. gcore/resources/cloud/k8s/k8s.py +233 -0
  46. gcore/resources/cloud/load_balancers/l7_policies/l7_policies.py +11 -12
  47. gcore/resources/cloud/load_balancers/l7_policies/rules.py +9 -10
  48. gcore/resources/cloud/load_balancers/listeners.py +18 -18
  49. gcore/resources/cloud/load_balancers/load_balancers.py +4 -4
  50. gcore/resources/cloud/load_balancers/pools/health_monitors.py +18 -6
  51. gcore/resources/cloud/load_balancers/pools/members.py +32 -2
  52. gcore/resources/cloud/load_balancers/pools/pools.py +32 -8
  53. gcore/resources/cloud/networks/networks.py +192 -4
  54. gcore/resources/cloud/networks/subnets.py +140 -8
  55. gcore/resources/cloud/reserved_fixed_ips/vip.py +5 -7
  56. gcore/resources/cloud/security_groups/security_groups.py +6 -6
  57. gcore/resources/cloud/tasks.py +46 -46
  58. gcore/resources/cloud/users/role_assignments.py +5 -4
  59. gcore/resources/cloud/volumes.py +4 -4
  60. gcore/resources/dns/__init__.py +75 -0
  61. gcore/resources/dns/dns.py +374 -0
  62. gcore/resources/dns/locations.py +288 -0
  63. gcore/resources/dns/metrics.py +214 -0
  64. gcore/resources/dns/pickers/__init__.py +33 -0
  65. gcore/resources/dns/pickers/pickers.py +167 -0
  66. gcore/resources/dns/pickers/presets.py +135 -0
  67. gcore/resources/dns/zones/__init__.py +47 -0
  68. gcore/resources/{cloud/inference/models.py → dns/zones/dnssec.py} +80 -122
  69. gcore/resources/dns/zones/rrsets.py +1005 -0
  70. gcore/resources/dns/zones/zones.py +1493 -0
  71. gcore/resources/storage/__init__.py +75 -0
  72. gcore/resources/storage/buckets/__init__.py +61 -0
  73. gcore/resources/storage/buckets/buckets.py +470 -0
  74. gcore/resources/storage/buckets/cors.py +265 -0
  75. gcore/resources/storage/buckets/lifecycle.py +276 -0
  76. gcore/resources/storage/buckets/policy.py +345 -0
  77. gcore/resources/storage/credentials.py +221 -0
  78. gcore/resources/storage/locations.py +190 -0
  79. gcore/resources/storage/statistics.py +364 -0
  80. gcore/resources/storage/storage.py +1042 -0
  81. gcore/resources/streaming/ai_tasks.py +56 -70
  82. gcore/resources/streaming/playlists.py +18 -18
  83. gcore/resources/streaming/quality_sets.py +8 -8
  84. gcore/resources/streaming/statistics.py +4 -122
  85. gcore/resources/streaming/streams/overlays.py +6 -6
  86. gcore/resources/streaming/streams/streams.py +40 -64
  87. gcore/resources/streaming/videos/subtitles.py +32 -30
  88. gcore/resources/streaming/videos/videos.py +78 -72
  89. gcore/resources/waap/domains/advanced_rules.py +2 -2
  90. gcore/resources/waap/domains/api_paths.py +13 -13
  91. gcore/resources/waap/domains/custom_rules.py +2 -2
  92. gcore/resources/waap/domains/domains.py +4 -4
  93. gcore/resources/waap/domains/firewall_rules.py +2 -2
  94. gcore/resources/waap/domains/insight_silences.py +6 -6
  95. gcore/resources/waap/domains/insights.py +7 -7
  96. gcore/resources/waap/domains/statistics.py +47 -47
  97. gcore/types/cloud/__init__.py +2 -4
  98. gcore/types/cloud/audit_log_list_params.py +2 -1
  99. gcore/types/cloud/baremetal/image_list_params.py +3 -2
  100. gcore/types/cloud/baremetal/server_create_params.py +8 -6
  101. gcore/types/cloud/baremetal/server_list_params.py +3 -2
  102. gcore/types/cloud/baremetal/server_rebuild_params.py +2 -0
  103. gcore/types/cloud/cost_report_get_aggregated_monthly_params.py +35 -31
  104. gcore/types/cloud/cost_report_get_aggregated_params.py +26 -25
  105. gcore/types/cloud/cost_report_get_detailed_params.py +26 -25
  106. gcore/types/cloud/ddos_profile.py +13 -7
  107. gcore/types/cloud/ddos_profile_field.py +21 -8
  108. gcore/types/cloud/ddos_profile_option_list.py +7 -6
  109. gcore/types/cloud/ddos_profile_status.py +2 -2
  110. gcore/types/cloud/ddos_profile_template.py +7 -3
  111. gcore/types/cloud/ddos_profile_template_field.py +12 -3
  112. gcore/types/cloud/file_share.py +2 -2
  113. gcore/types/cloud/file_share_create_params.py +12 -6
  114. gcore/types/cloud/floating_ip_list_params.py +3 -2
  115. gcore/types/cloud/gpu_baremetal_cluster.py +101 -74
  116. gcore/types/cloud/gpu_baremetal_cluster_create_params.py +76 -93
  117. gcore/types/cloud/gpu_baremetal_cluster_delete_params.py +17 -10
  118. gcore/types/cloud/gpu_baremetal_cluster_list_params.py +14 -3
  119. gcore/types/cloud/gpu_baremetal_cluster_rebuild_params.py +4 -2
  120. gcore/types/cloud/gpu_baremetal_clusters/__init__.py +6 -0
  121. gcore/types/cloud/gpu_baremetal_clusters/gpu_baremetal_cluster_server.py +74 -0
  122. gcore/types/cloud/{gpu_baremetal_cluster_server.py → gpu_baremetal_clusters/gpu_baremetal_cluster_server_v1.py} +10 -10
  123. gcore/types/cloud/gpu_baremetal_clusters/gpu_baremetal_cluster_server_v1_list.py +16 -0
  124. gcore/types/cloud/{gpu_baremetal_flavor.py → gpu_baremetal_clusters/gpu_baremetal_flavor.py} +1 -1
  125. gcore/types/cloud/{gpu_baremetal_flavor_list.py → gpu_baremetal_clusters/gpu_baremetal_flavor_list.py} +1 -1
  126. gcore/types/cloud/gpu_baremetal_clusters/server_list_params.py +75 -0
  127. gcore/types/cloud/inference/__init__.py +0 -5
  128. gcore/types/cloud/inference/applications/__init__.py +12 -0
  129. gcore/types/cloud/inference/applications/deployment_create_params.py +68 -0
  130. gcore/types/cloud/inference/applications/deployment_patch_params.py +62 -0
  131. gcore/types/cloud/inference/applications/inference_application_deployment.py +111 -0
  132. gcore/types/cloud/inference/applications/inference_application_deployment_list.py +16 -0
  133. gcore/types/cloud/inference/applications/inference_application_template.py +94 -0
  134. gcore/types/cloud/inference/applications/inference_application_template_list.py +16 -0
  135. gcore/types/cloud/inference/deployment_create_params.py +7 -6
  136. gcore/types/cloud/inference/deployment_update_params.py +7 -6
  137. gcore/types/cloud/instance_assign_security_group_params.py +4 -2
  138. gcore/types/cloud/instance_list_params.py +3 -2
  139. gcore/types/cloud/instance_unassign_security_group_params.py +4 -2
  140. gcore/types/cloud/instances/image_list_params.py +3 -2
  141. gcore/types/cloud/k8s/__init__.py +13 -0
  142. gcore/types/cloud/k8s/cluster_create_params.py +299 -0
  143. gcore/types/cloud/k8s/cluster_delete_params.py +16 -0
  144. gcore/types/cloud/k8s/cluster_update_params.py +203 -0
  145. gcore/types/cloud/k8s/cluster_upgrade_params.py +16 -0
  146. gcore/types/cloud/k8s/clusters/__init__.py +10 -0
  147. gcore/types/cloud/k8s/clusters/k8s_cluster_pool.py +66 -0
  148. gcore/types/cloud/k8s/clusters/k8s_cluster_pool_list.py +16 -0
  149. gcore/types/cloud/k8s/clusters/node_list_params.py +16 -0
  150. gcore/types/cloud/k8s/clusters/pool_create_params.py +53 -0
  151. gcore/types/cloud/k8s/clusters/pool_resize_params.py +18 -0
  152. gcore/types/cloud/k8s/clusters/pool_update_params.py +34 -0
  153. gcore/types/cloud/k8s/clusters/pools/__init__.py +5 -0
  154. gcore/types/cloud/k8s/clusters/pools/node_list_params.py +18 -0
  155. gcore/types/cloud/k8s/flavor_list_params.py +19 -0
  156. gcore/types/cloud/k8s/k8s_cluster.py +209 -0
  157. gcore/types/cloud/k8s/k8s_cluster_certificate.py +13 -0
  158. gcore/types/cloud/k8s/k8s_cluster_kubeconfig.py +19 -0
  159. gcore/types/cloud/k8s/k8s_cluster_list.py +16 -0
  160. gcore/types/cloud/k8s_cluster_version.py +10 -0
  161. gcore/types/cloud/{gpu_baremetal_cluster_server_list.py → k8s_cluster_version_list.py} +4 -4
  162. gcore/types/cloud/load_balancer_create_params.py +23 -4
  163. gcore/types/cloud/load_balancer_list_params.py +3 -2
  164. gcore/types/cloud/load_balancers/l7_policies/rule_create_params.py +3 -2
  165. gcore/types/cloud/load_balancers/l7_policies/rule_replace_params.py +3 -2
  166. gcore/types/cloud/load_balancers/l7_policy_create_params.py +3 -2
  167. gcore/types/cloud/load_balancers/l7_policy_replace_params.py +3 -2
  168. gcore/types/cloud/load_balancers/listener_create_params.py +4 -3
  169. gcore/types/cloud/load_balancers/listener_update_params.py +5 -3
  170. gcore/types/cloud/load_balancers/pool_create_params.py +19 -1
  171. gcore/types/cloud/load_balancers/pool_update_params.py +19 -1
  172. gcore/types/cloud/load_balancers/pools/member_add_params.py +19 -1
  173. gcore/types/cloud/member.py +19 -1
  174. gcore/types/cloud/network_list_params.py +3 -2
  175. gcore/types/cloud/networks/subnet_create_params.py +3 -2
  176. gcore/types/cloud/networks/subnet_list_params.py +3 -2
  177. gcore/types/cloud/networks/subnet_update_params.py +3 -2
  178. gcore/types/cloud/project.py +9 -9
  179. gcore/types/cloud/reserved_fixed_ips/vip_replace_connected_ports_params.py +3 -2
  180. gcore/types/cloud/reserved_fixed_ips/vip_update_connected_ports_params.py +3 -2
  181. gcore/types/cloud/security_group_create_params.py +4 -2
  182. gcore/types/cloud/security_group_list_params.py +3 -2
  183. gcore/types/cloud/task_id_list.py +8 -1
  184. gcore/types/cloud/task_list_params.py +23 -23
  185. gcore/types/cloud/usage_report_get_params.py +26 -25
  186. gcore/types/cloud/users/role_assignment.py +2 -1
  187. gcore/types/cloud/users/role_assignment_create_params.py +4 -2
  188. gcore/types/cloud/users/role_assignment_update_params.py +4 -2
  189. gcore/types/cloud/volume_list_params.py +3 -2
  190. gcore/types/dns/__init__.py +31 -0
  191. gcore/types/dns/dns_get_account_overview_response.py +21 -0
  192. gcore/types/dns/dns_label_name.py +13 -0
  193. gcore/types/dns/dns_location_translations.py +11 -0
  194. gcore/types/dns/dns_lookup_params.py +15 -0
  195. gcore/types/dns/dns_lookup_response.py +21 -0
  196. gcore/types/dns/dns_name_server.py +17 -0
  197. gcore/types/dns/location_list_continents_response.py +10 -0
  198. gcore/types/dns/location_list_countries_response.py +10 -0
  199. gcore/types/dns/location_list_regions_response.py +10 -0
  200. gcore/types/dns/location_list_response.py +16 -0
  201. gcore/types/dns/metric_list_params.py +24 -0
  202. gcore/types/dns/metric_list_response.py +7 -0
  203. gcore/types/dns/picker_list_response.py +10 -0
  204. gcore/types/dns/pickers/__init__.py +5 -0
  205. gcore/types/dns/pickers/preset_list_response.py +10 -0
  206. gcore/types/dns/zone_check_delegation_status_response.py +20 -0
  207. gcore/types/dns/zone_create_params.py +59 -0
  208. gcore/types/dns/zone_create_response.py +13 -0
  209. gcore/types/dns/zone_export_response.py +11 -0
  210. gcore/types/dns/zone_get_response.py +106 -0
  211. gcore/types/dns/zone_get_statistics_params.py +43 -0
  212. gcore/types/dns/zone_get_statistics_response.py +19 -0
  213. gcore/types/dns/zone_import_params.py +32 -0
  214. gcore/types/dns/zone_import_response.py +26 -0
  215. gcore/types/dns/zone_list_params.py +57 -0
  216. gcore/types/dns/zone_list_response.py +105 -0
  217. gcore/types/dns/zone_replace_params.py +61 -0
  218. gcore/types/dns/zones/__init__.py +15 -0
  219. gcore/types/dns/zones/dns_failover_log.py +19 -0
  220. gcore/types/dns/zones/dns_output_rrset.py +123 -0
  221. gcore/types/dns/zones/dnssec_get_response.py +38 -0
  222. gcore/types/dns/zones/dnssec_update_params.py +11 -0
  223. gcore/types/dns/zones/dnssec_update_response.py +38 -0
  224. gcore/types/dns/zones/rrset_create_params.py +82 -0
  225. gcore/types/dns/zones/rrset_get_failover_logs_params.py +21 -0
  226. gcore/types/dns/zones/rrset_get_failover_logs_response.py +15 -0
  227. gcore/types/dns/zones/rrset_list_params.py +21 -0
  228. gcore/types/dns/zones/rrset_list_response.py +14 -0
  229. gcore/types/dns/zones/rrset_replace_params.py +82 -0
  230. gcore/types/security/client_profile.py +1 -1
  231. gcore/types/security/profile_create_params.py +2 -2
  232. gcore/types/security/profile_recreate_params.py +2 -2
  233. gcore/types/security/profile_replace_params.py +2 -2
  234. gcore/types/storage/__init__.py +21 -0
  235. gcore/types/storage/bucket.py +15 -0
  236. gcore/types/storage/bucket_list_params.py +15 -0
  237. gcore/types/storage/buckets/__init__.py +9 -0
  238. gcore/types/storage/buckets/bucket_cors.py +18 -0
  239. gcore/types/storage/buckets/bucket_policy.py +7 -0
  240. gcore/types/storage/buckets/cor_create_params.py +17 -0
  241. gcore/types/storage/buckets/lifecycle_create_params.py +18 -0
  242. gcore/types/storage/buckets/policy_get_response.py +7 -0
  243. gcore/types/storage/credential_recreate_params.py +36 -0
  244. gcore/types/storage/location.py +24 -0
  245. gcore/types/storage/location_list_params.py +13 -0
  246. gcore/types/storage/statistic_get_usage_aggregated_params.py +24 -0
  247. gcore/types/storage/statistic_get_usage_series_params.py +38 -0
  248. gcore/types/storage/statistic_get_usage_series_response.py +12 -0
  249. gcore/types/storage/storage.py +101 -0
  250. gcore/types/storage/storage_create_params.py +44 -0
  251. gcore/types/storage/storage_list_params.py +39 -0
  252. gcore/types/storage/storage_restore_params.py +11 -0
  253. gcore/types/storage/storage_update_params.py +18 -0
  254. gcore/types/storage/usage_series.py +201 -0
  255. gcore/types/storage/usage_total.py +54 -0
  256. gcore/types/streaming/__init__.py +0 -4
  257. gcore/types/streaming/ai_contentmoderation_hardnudity.py +1 -1
  258. gcore/types/streaming/ai_contentmoderation_nsfw.py +1 -1
  259. gcore/types/streaming/ai_contentmoderation_softnudity.py +1 -1
  260. gcore/types/streaming/ai_contentmoderation_sport.py +1 -1
  261. gcore/types/streaming/ai_task.py +1 -5
  262. gcore/types/streaming/ai_task_create_params.py +2 -2
  263. gcore/types/streaming/ai_task_get_response.py +0 -46
  264. gcore/types/streaming/clip.py +2 -1
  265. gcore/types/streaming/create_video_param.py +13 -12
  266. gcore/types/streaming/max_stream_series.py +5 -5
  267. gcore/types/streaming/playlist.py +1 -1
  268. gcore/types/streaming/playlist_create_params.py +1 -1
  269. gcore/types/streaming/playlist_update_params.py +1 -1
  270. gcore/types/streaming/playlist_video.py +13 -12
  271. gcore/types/streaming/storage_series.py +5 -5
  272. gcore/types/streaming/stream.py +86 -49
  273. gcore/types/streaming/stream_create_clip_params.py +2 -1
  274. gcore/types/streaming/stream_create_params.py +9 -23
  275. gcore/types/streaming/stream_series.py +5 -5
  276. gcore/types/streaming/stream_update_params.py +9 -23
  277. gcore/types/streaming/video.py +53 -42
  278. gcore/types/streaming/video_update_params.py +13 -12
  279. gcore/types/streaming/vod_statistics_series.py +5 -5
  280. gcore/types/streaming/vod_total_stream_duration_series.py +3 -3
  281. gcore/types/waap/domain_list_params.py +1 -1
  282. gcore/types/waap/domain_update_params.py +1 -1
  283. gcore/types/waap/domains/advanced_rule_create_params.py +7 -4
  284. gcore/types/waap/domains/advanced_rule_update_params.py +6 -3
  285. gcore/types/waap/domains/api_path_create_params.py +4 -3
  286. gcore/types/waap/domains/api_path_list_params.py +3 -1
  287. gcore/types/waap/domains/api_path_update_params.py +5 -4
  288. gcore/types/waap/domains/custom_rule_create_params.py +13 -14
  289. gcore/types/waap/domains/custom_rule_update_params.py +12 -13
  290. gcore/types/waap/domains/firewall_rule_create_params.py +3 -2
  291. gcore/types/waap/domains/firewall_rule_update_params.py +2 -1
  292. gcore/types/waap/domains/insight_list_params.py +4 -2
  293. gcore/types/waap/domains/insight_replace_params.py +1 -1
  294. gcore/types/waap/domains/insight_silence_list_params.py +5 -3
  295. gcore/types/waap/domains/setting_update_params.py +3 -2
  296. gcore/types/waap/domains/statistic_get_ddos_info_params.py +6 -9
  297. gcore/types/waap/domains/statistic_get_events_aggregated_params.py +9 -10
  298. gcore/types/waap/domains/statistic_get_requests_series_params.py +8 -9
  299. gcore/types/waap/domains/statistic_get_traffic_series_params.py +6 -9
  300. gcore/types/waap/domains/waap_advanced_rule.py +3 -2
  301. gcore/types/waap/domains/waap_api_path.py +4 -4
  302. gcore/types/waap/domains/waap_api_scan_result.py +2 -2
  303. gcore/types/waap/domains/waap_custom_rule.py +4 -7
  304. gcore/types/waap/domains/waap_firewall_rule.py +3 -2
  305. gcore/types/waap/domains/waap_insight.py +1 -1
  306. gcore/types/waap/domains/waap_request_details.py +5 -4
  307. gcore/types/waap/waap_ip_ddos_info_model.py +3 -3
  308. gcore/types/waap/waap_rule_set.py +1 -1
  309. {gcore-0.10.0.dist-info → gcore-0.11.0.dist-info}/METADATA +7 -2
  310. {gcore-0.10.0.dist-info → gcore-0.11.0.dist-info}/RECORD +312 -192
  311. gcore/types/cloud/inference/inference_model.py +0 -65
  312. gcore/types/cloud/inference/inference_registry_credentials_create.py +0 -22
  313. gcore/types/cloud/inference/model_list_params.py +0 -21
  314. gcore/types/streaming/ai_contentmoderation_casm.py +0 -39
  315. gcore/types/streaming/ai_contentmoderation_weapon.py +0 -39
  316. gcore/types/streaming/meet_series.py +0 -23
  317. gcore/types/streaming/statistic_get_meet_series_params.py +0 -20
  318. {gcore-0.10.0.dist-info → gcore-0.11.0.dist-info}/WHEEL +0 -0
  319. {gcore-0.10.0.dist-info → gcore-0.11.0.dist-info}/licenses/LICENSE +0 -0
@@ -2,9 +2,10 @@
2
2
 
3
3
  from __future__ import annotations
4
4
 
5
- from typing import List
6
5
  from typing_extensions import TypedDict
7
6
 
7
+ from ..._types import SequenceNotStr
8
+
8
9
  __all__ = ["FloatingIPListParams"]
9
10
 
10
11
 
@@ -24,7 +25,7 @@ class FloatingIPListParams(TypedDict, total=False):
24
25
  Offset value is used to exclude the first set of records from the result
25
26
  """
26
27
 
27
- tag_key: List[str]
28
+ tag_key: SequenceNotStr[str]
28
29
  """Optional. Filter by tag keys. ?`tag_key`=key1&`tag_key`=key2"""
29
30
 
30
31
  tag_key_value: str
@@ -1,78 +1,133 @@
1
1
  # File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
2
2
 
3
- from typing import List, Optional
4
- from typing_extensions import Literal
3
+ from typing import List, Union, Optional
4
+ from datetime import datetime
5
+ from typing_extensions import Literal, Annotated, TypeAlias
5
6
 
6
7
  from .tag import Tag
8
+ from ..._utils import PropertyInfo
7
9
  from ..._models import BaseModel
8
- from .gpu_baremetal_cluster_server import GPUBaremetalClusterServer
9
10
 
10
- __all__ = ["GPUBaremetalCluster", "Interface"]
11
+ __all__ = [
12
+ "GPUBaremetalCluster",
13
+ "ServersSettings",
14
+ "ServersSettingsInterface",
15
+ "ServersSettingsInterfaceExternalInterfaceOutputSerializer",
16
+ "ServersSettingsInterfaceSubnetInterfaceOutputSerializer",
17
+ "ServersSettingsInterfaceSubnetInterfaceOutputSerializerFloatingIP",
18
+ "ServersSettingsInterfaceAnySubnetInterfaceOutputSerializer",
19
+ "ServersSettingsInterfaceAnySubnetInterfaceOutputSerializerFloatingIP",
20
+ "ServersSettingsSecurityGroup",
21
+ ]
11
22
 
12
23
 
13
- class Interface(BaseModel):
14
- network_id: str
15
- """Network ID"""
24
+ class ServersSettingsInterfaceExternalInterfaceOutputSerializer(BaseModel):
25
+ ip_family: Literal["dual", "ipv4", "ipv6"]
26
+ """Which subnets should be selected: IPv4, IPv6, or use dual stack."""
27
+
28
+ name: Optional[str] = None
29
+ """Interface name"""
30
+
31
+ type: Literal["external"]
32
+
33
+
34
+ class ServersSettingsInterfaceSubnetInterfaceOutputSerializerFloatingIP(BaseModel):
35
+ source: Literal["new"]
16
36
 
17
- port_id: str
37
+
38
+ class ServersSettingsInterfaceSubnetInterfaceOutputSerializer(BaseModel):
39
+ floating_ip: Optional[ServersSettingsInterfaceSubnetInterfaceOutputSerializerFloatingIP] = None
40
+ """Floating IP config for this subnet attachment"""
41
+
42
+ name: Optional[str] = None
43
+ """Interface name"""
44
+
45
+ network_id: str
18
46
  """Network ID the subnet belongs to. Port will be plugged in this network"""
19
47
 
20
48
  subnet_id: str
21
- """Port is assigned to IP address from the subnet"""
49
+ """Port is assigned an IP address from this subnet"""
22
50
 
23
- type: str
24
- """Network type"""
51
+ type: Literal["subnet"]
25
52
 
26
53
 
27
- class GPUBaremetalCluster(BaseModel):
28
- cluster_id: str
29
- """GPU Cluster ID"""
54
+ class ServersSettingsInterfaceAnySubnetInterfaceOutputSerializerFloatingIP(BaseModel):
55
+ source: Literal["new"]
30
56
 
31
- cluster_name: str
32
- """GPU Cluster Name"""
33
57
 
34
- cluster_status: Literal["ACTIVE", "ERROR", "PENDING", "SUSPENDED"]
35
- """GPU Cluster status"""
58
+ class ServersSettingsInterfaceAnySubnetInterfaceOutputSerializer(BaseModel):
59
+ floating_ip: Optional[ServersSettingsInterfaceAnySubnetInterfaceOutputSerializerFloatingIP] = None
60
+ """Floating IP config for this subnet attachment"""
36
61
 
37
- created_at: Optional[str] = None
38
- """Datetime when the cluster was created"""
62
+ ip_address: Optional[str] = None
63
+ """Fixed IP address"""
39
64
 
40
- creator_task_id: Optional[str] = None
41
- """Task that created this entity"""
65
+ ip_family: Literal["dual", "ipv4", "ipv6"]
66
+ """Which subnets should be selected: IPv4, IPv6, or use dual stack"""
42
67
 
43
- flavor: str
44
- """Flavor ID is the same as the name"""
68
+ name: Optional[str] = None
69
+ """Interface name"""
45
70
 
46
- image_id: str
47
- """Image ID"""
71
+ network_id: str
72
+ """Network ID the subnet belongs to. Port will be plugged in this network"""
48
73
 
49
- image_name: Optional[str] = None
50
- """Image name"""
74
+ type: Literal["any_subnet"]
51
75
 
52
- interfaces: Optional[List[Interface]] = None
53
- """Networks managed by user and associated with the cluster"""
54
76
 
55
- password: Optional[str] = None
56
- """A password for a bare metal server.
77
+ ServersSettingsInterface: TypeAlias = Annotated[
78
+ Union[
79
+ ServersSettingsInterfaceExternalInterfaceOutputSerializer,
80
+ ServersSettingsInterfaceSubnetInterfaceOutputSerializer,
81
+ ServersSettingsInterfaceAnySubnetInterfaceOutputSerializer,
82
+ ],
83
+ PropertyInfo(discriminator="type"),
84
+ ]
57
85
 
58
- This parameter is used to set a password for the "Admin" user on a Windows
59
- instance, a default user or a new user on a Linux instance
60
- """
61
86
 
62
- project_id: int
63
- """Project ID"""
87
+ class ServersSettingsSecurityGroup(BaseModel):
88
+ name: str
89
+ """Name."""
64
90
 
65
- region: str
66
- """Region name"""
67
91
 
68
- region_id: int
69
- """Region ID"""
92
+ class ServersSettings(BaseModel):
93
+ interfaces: List[ServersSettingsInterface]
70
94
 
71
- servers: List[GPUBaremetalClusterServer]
72
- """GPU cluster servers"""
95
+ security_groups: List[ServersSettingsSecurityGroup]
96
+ """Security groups names"""
73
97
 
74
98
  ssh_key_name: Optional[str] = None
75
- """Keypair name to inject into new cluster(s)"""
99
+ """SSH key name"""
100
+
101
+ user_data: Optional[str] = None
102
+ """Optional custom user data (Base64-encoded) Mutually exclusive with 'password'."""
103
+
104
+
105
+ class GPUBaremetalCluster(BaseModel):
106
+ id: str
107
+ """Cluster unique identifier"""
108
+
109
+ created_at: datetime
110
+ """Cluster creation date time"""
111
+
112
+ flavor: str
113
+ """Cluster flavor name"""
114
+
115
+ managed_by: Literal["k8s", "user"]
116
+ """User type managing the resource"""
117
+
118
+ name: str
119
+ """Cluster name"""
120
+
121
+ servers_count: int
122
+ """Cluster servers count"""
123
+
124
+ servers_ids: List[str]
125
+ """List of cluster nodes"""
126
+
127
+ servers_settings: ServersSettings
128
+
129
+ status: Literal["active", "deleting", "error", "new", "resizing"]
130
+ """Cluster status"""
76
131
 
77
132
  tags: List[Tag]
78
133
  """List of key-value tags associated with the resource.
@@ -84,33 +139,5 @@ class GPUBaremetalCluster(BaseModel):
84
139
  values.
85
140
  """
86
141
 
87
- task_id: Optional[str] = None
88
- """Task ID associated with the cluster"""
89
-
90
- task_status: Literal[
91
- "CLUSTER_CLEAN_UP",
92
- "CLUSTER_RESIZE",
93
- "CLUSTER_RESUME",
94
- "CLUSTER_SUSPEND",
95
- "ERROR",
96
- "FINISHED",
97
- "IPU_SERVERS",
98
- "NETWORK",
99
- "POPLAR_SERVERS",
100
- "POST_DEPLOY_SETUP",
101
- "VIPU_CONTROLLER",
102
- ]
103
- """Task status"""
104
-
105
- user_data: Optional[str] = None
106
- """String in base64 format.
107
-
108
- Must not be passed together with 'username' or 'password'. Examples of the
109
- `user_data`: https://cloudinit.readthedocs.io/en/latest/topics/examples.html
110
- """
111
-
112
- username: Optional[str] = None
113
- """A name of a new user in the Linux instance.
114
-
115
- It may be passed with a 'password' parameter
116
- """
142
+ updated_at: Optional[datetime] = None
143
+ """Cluster update date time"""
@@ -2,61 +2,44 @@
2
2
 
3
3
  from __future__ import annotations
4
4
 
5
- from typing import Dict, Union, Iterable, Optional
5
+ from typing import Dict, Union, Iterable
6
6
  from typing_extensions import Literal, Required, TypeAlias, TypedDict
7
7
 
8
- from .interface_ip_family import InterfaceIPFamily
9
-
10
8
  __all__ = [
11
9
  "GPUBaremetalClusterCreateParams",
12
- "Interface",
13
- "InterfaceCreateGPUClusterExternalInterfaceSerializer",
14
- "InterfaceCreateGPUClusterSubnetInterfaceSerializer",
15
- "InterfaceCreateGPUClusterSubnetInterfaceSerializerFloatingIP",
16
- "InterfaceCreateGPUClusterAnySubnetInterfaceSerializer",
17
- "InterfaceCreateGPUClusterAnySubnetInterfaceSerializerFloatingIP",
18
- "SecurityGroup",
10
+ "ServersSettings",
11
+ "ServersSettingsInterface",
12
+ "ServersSettingsInterfaceExternalInterfaceInputSerializer",
13
+ "ServersSettingsInterfaceSubnetInterfaceInputSerializer",
14
+ "ServersSettingsInterfaceSubnetInterfaceInputSerializerFloatingIP",
15
+ "ServersSettingsInterfaceAnySubnetInterfaceInputSerializer",
16
+ "ServersSettingsInterfaceAnySubnetInterfaceInputSerializerFloatingIP",
17
+ "ServersSettingsCredentials",
18
+ "ServersSettingsSecurityGroup",
19
19
  ]
20
20
 
21
21
 
22
22
  class GPUBaremetalClusterCreateParams(TypedDict, total=False):
23
23
  project_id: int
24
+ """Project ID"""
24
25
 
25
26
  region_id: int
27
+ """Region ID"""
26
28
 
27
29
  flavor: Required[str]
28
- """Flavor name"""
30
+ """Cluster flavor ID"""
29
31
 
30
32
  image_id: Required[str]
31
- """Image ID"""
32
-
33
- interfaces: Required[Iterable[Interface]]
34
- """A list of network interfaces for the server.
35
-
36
- You can create one or more interfaces - private, public, or both.
37
- """
33
+ """System image ID"""
38
34
 
39
35
  name: Required[str]
40
- """GPU Cluster name"""
36
+ """Cluster name"""
41
37
 
42
- instances_count: int
43
- """Number of servers to create"""
38
+ servers_count: Required[int]
39
+ """Number of servers in the cluster"""
44
40
 
45
- password: str
46
- """A password for a bare metal server.
47
-
48
- This parameter is used to set a password for the "Admin" user on a Windows
49
- instance, a default user or a new user on a Linux instance
50
- """
51
-
52
- security_groups: Iterable[SecurityGroup]
53
- """Security group UUIDs"""
54
-
55
- ssh_key_name: str
56
- """
57
- Specifies the name of the SSH keypair, created via the
58
- [/v1/`ssh_keys` endpoint](/docs/api-reference/cloud/ssh-keys/add-or-generate-ssh-key).
59
- """
41
+ servers_settings: Required[ServersSettings]
42
+ """Configuration settings for the servers in the cluster"""
60
43
 
61
44
  tags: Dict[str, str]
62
45
  """Key-value tags to associate with the resource.
@@ -68,96 +51,96 @@ class GPUBaremetalClusterCreateParams(TypedDict, total=False):
68
51
  values.
69
52
  """
70
53
 
71
- user_data: str
72
- """String in base64 format.
73
-
74
- Must not be passed together with 'username' or 'password'. Examples of the
75
- `user_data`: https://cloudinit.readthedocs.io/en/latest/topics/examples.html
76
- """
77
-
78
- username: str
79
- """A name of a new user in the Linux instance.
80
-
81
- It may be passed with a 'password' parameter
82
- """
83
-
84
54
 
85
- class InterfaceCreateGPUClusterExternalInterfaceSerializer(TypedDict, total=False):
55
+ class ServersSettingsInterfaceExternalInterfaceInputSerializer(TypedDict, total=False):
86
56
  type: Required[Literal["external"]]
87
- """A public IP address will be assigned to the server."""
88
57
 
89
- interface_name: str
90
- """Interface name.
58
+ ip_family: Literal["dual", "ipv4", "ipv6"]
59
+ """Which subnets should be selected: IPv4, IPv6, or use dual stack."""
91
60
 
92
- Defaults to `null` and is returned as `null` in the API response if not set.
93
- """
94
-
95
- ip_family: Optional[InterfaceIPFamily]
96
- """Specify `ipv4`, `ipv6`, or `dual` to enable both."""
61
+ name: str
62
+ """Interface name"""
97
63
 
98
64
 
99
- class InterfaceCreateGPUClusterSubnetInterfaceSerializerFloatingIP(TypedDict, total=False):
65
+ class ServersSettingsInterfaceSubnetInterfaceInputSerializerFloatingIP(TypedDict, total=False):
100
66
  source: Required[Literal["new"]]
101
67
 
102
68
 
103
- class InterfaceCreateGPUClusterSubnetInterfaceSerializer(TypedDict, total=False):
69
+ class ServersSettingsInterfaceSubnetInterfaceInputSerializer(TypedDict, total=False):
104
70
  network_id: Required[str]
105
- """The network where the server will be connected."""
71
+ """Network ID the subnet belongs to. Port will be plugged in this network"""
106
72
 
107
73
  subnet_id: Required[str]
108
- """The server will get an IP address from this subnet."""
74
+ """Port is assigned an IP address from this subnet"""
109
75
 
110
76
  type: Required[Literal["subnet"]]
111
- """The instance will get an IP address from the selected network.
112
77
 
113
- If you choose to add a floating IP, the instance will be reachable from the
114
- internet. Otherwise, it will only have a private IP within the network.
115
- """
116
-
117
- floating_ip: InterfaceCreateGPUClusterSubnetInterfaceSerializerFloatingIP
78
+ floating_ip: ServersSettingsInterfaceSubnetInterfaceInputSerializerFloatingIP
118
79
  """Floating IP config for this subnet attachment"""
119
80
 
120
- interface_name: str
121
- """Interface name.
122
-
123
- Defaults to `null` and is returned as `null` in the API response if not set.
124
- """
81
+ name: str
82
+ """Interface name"""
125
83
 
126
84
 
127
- class InterfaceCreateGPUClusterAnySubnetInterfaceSerializerFloatingIP(TypedDict, total=False):
85
+ class ServersSettingsInterfaceAnySubnetInterfaceInputSerializerFloatingIP(TypedDict, total=False):
128
86
  source: Required[Literal["new"]]
129
87
 
130
88
 
131
- class InterfaceCreateGPUClusterAnySubnetInterfaceSerializer(TypedDict, total=False):
89
+ class ServersSettingsInterfaceAnySubnetInterfaceInputSerializer(TypedDict, total=False):
132
90
  network_id: Required[str]
133
- """The network where the server will be connected."""
91
+ """Network ID the subnet belongs to. Port will be plugged in this network"""
134
92
 
135
93
  type: Required[Literal["any_subnet"]]
136
- """Server will be attached to a subnet with the largest count of free IPs."""
137
94
 
138
- floating_ip: InterfaceCreateGPUClusterAnySubnetInterfaceSerializerFloatingIP
139
- """Allows the server to have a public IP that can be reached from the internet."""
95
+ floating_ip: ServersSettingsInterfaceAnySubnetInterfaceInputSerializerFloatingIP
96
+ """Floating IP config for this subnet attachment"""
140
97
 
141
- interface_name: str
142
- """Interface name.
98
+ ip_family: Literal["dual", "ipv4", "ipv6"]
99
+ """Which subnets should be selected: IPv4, IPv6, or use dual stack"""
100
+
101
+ name: str
102
+ """Interface name"""
143
103
 
144
- Defaults to `null` and is returned as `null` in the API response if not set.
145
- """
146
104
 
147
- ip_address: str
148
- """You can specify a specific IP address from your subnet."""
105
+ ServersSettingsInterface: TypeAlias = Union[
106
+ ServersSettingsInterfaceExternalInterfaceInputSerializer,
107
+ ServersSettingsInterfaceSubnetInterfaceInputSerializer,
108
+ ServersSettingsInterfaceAnySubnetInterfaceInputSerializer,
109
+ ]
149
110
 
150
- ip_family: InterfaceIPFamily
151
- """Specify `ipv4`, `ipv6`, or `dual` to enable both."""
152
111
 
112
+ class ServersSettingsCredentials(TypedDict, total=False):
113
+ password: str
114
+ """Used to set the password for the specified 'username' on Linux instances.
153
115
 
154
- Interface: TypeAlias = Union[
155
- InterfaceCreateGPUClusterExternalInterfaceSerializer,
156
- InterfaceCreateGPUClusterSubnetInterfaceSerializer,
157
- InterfaceCreateGPUClusterAnySubnetInterfaceSerializer,
158
- ]
116
+ If 'username' is not provided, the password is applied to the default user of
117
+ the image. Mutually exclusive with '`user_data`' - only one can be specified.
118
+ """
119
+
120
+ ssh_key_name: str
121
+ """
122
+ Specifies the name of the SSH keypair, created via the
123
+ [/v1/`ssh_keys` endpoint](/docs/api-reference/cloud/ssh-keys/add-or-generate-ssh-key).
124
+ """
125
+
126
+ username: str
127
+ """The 'username' and 'password' fields create a new user on the system"""
159
128
 
160
129
 
161
- class SecurityGroup(TypedDict, total=False):
130
+ class ServersSettingsSecurityGroup(TypedDict, total=False):
162
131
  id: Required[str]
163
132
  """Resource ID"""
133
+
134
+
135
+ class ServersSettings(TypedDict, total=False):
136
+ interfaces: Required[Iterable[ServersSettingsInterface]]
137
+ """Subnet IPs and floating IPs"""
138
+
139
+ credentials: ServersSettingsCredentials
140
+ """Optional server access credentials"""
141
+
142
+ security_groups: Iterable[ServersSettingsSecurityGroup]
143
+ """List of security groups UUIDs"""
144
+
145
+ user_data: str
146
+ """Optional custom user data (Base64-encoded)"""
@@ -4,25 +4,32 @@ from __future__ import annotations
4
4
 
5
5
  from typing_extensions import TypedDict
6
6
 
7
+ from ..._types import SequenceNotStr
8
+
7
9
  __all__ = ["GPUBaremetalClusterDeleteParams"]
8
10
 
9
11
 
10
12
  class GPUBaremetalClusterDeleteParams(TypedDict, total=False):
11
13
  project_id: int
14
+ """Project ID"""
12
15
 
13
16
  region_id: int
17
+ """Region ID"""
14
18
 
15
- delete_floatings: bool
16
- """True if it is required to delete floating IPs assigned to the servers.
17
-
18
- Can't be used with floatings.
19
+ all_floating_ips: bool
20
+ """
21
+ Flag indicating whether the floating ips associated with server / cluster are
22
+ deleted
19
23
  """
20
24
 
21
- floatings: str
22
- """Comma separated list of floating ids that should be deleted.
23
-
24
- Can't be used with `delete_floatings`.
25
+ all_reserved_fixed_ips: bool
26
+ """
27
+ Flag indicating whether the reserved fixed ips associated with server / cluster
28
+ are deleted
25
29
  """
26
30
 
27
- reserved_fixed_ips: str
28
- """Comma separated list of port IDs to be deleted with the servers"""
31
+ floating_ip_ids: SequenceNotStr[str]
32
+ """Optional list of floating ips to be deleted"""
33
+
34
+ reserved_fixed_ip_ids: SequenceNotStr[str]
35
+ """Optional list of reserved fixed ips to be deleted"""
@@ -2,18 +2,29 @@
2
2
 
3
3
  from __future__ import annotations
4
4
 
5
- from typing_extensions import TypedDict
5
+ from typing import List
6
+ from typing_extensions import Literal, TypedDict
6
7
 
7
8
  __all__ = ["GPUBaremetalClusterListParams"]
8
9
 
9
10
 
10
11
  class GPUBaremetalClusterListParams(TypedDict, total=False):
11
12
  project_id: int
13
+ """Project ID"""
12
14
 
13
15
  region_id: int
16
+ """Region ID"""
14
17
 
15
18
  limit: int
16
- """Limit the number of returned clusters"""
19
+ """Limit of items on a single page"""
20
+
21
+ managed_by: List[Literal["k8s", "user"]]
22
+ """Specifies the entity responsible for managing the resource.
23
+
24
+ - `user`: The resource (cluster) is created and maintained directly by the user.
25
+ - `k8s`: The resource is created and maintained automatically by Managed
26
+ Kubernetes service
27
+ """
17
28
 
18
29
  offset: int
19
- """Offset value is used to exclude the first set of records from the result"""
30
+ """Offset in results list"""
@@ -2,9 +2,11 @@
2
2
 
3
3
  from __future__ import annotations
4
4
 
5
- from typing import List, Optional
5
+ from typing import Optional
6
6
  from typing_extensions import Required, TypedDict
7
7
 
8
+ from ..._types import SequenceNotStr
9
+
8
10
  __all__ = ["GPUBaremetalClusterRebuildParams"]
9
11
 
10
12
 
@@ -13,7 +15,7 @@ class GPUBaremetalClusterRebuildParams(TypedDict, total=False):
13
15
 
14
16
  region_id: int
15
17
 
16
- nodes: Required[List[str]]
18
+ nodes: Required[SequenceNotStr[str]]
17
19
  """List of nodes uuids to be rebuild"""
18
20
 
19
21
  image_id: Optional[str]
@@ -3,7 +3,13 @@
3
3
  from __future__ import annotations
4
4
 
5
5
  from .flavor_list_params import FlavorListParams as FlavorListParams
6
+ from .server_list_params import ServerListParams as ServerListParams
6
7
  from .image_upload_params import ImageUploadParams as ImageUploadParams
8
+ from .gpu_baremetal_flavor import GPUBaremetalFlavor as GPUBaremetalFlavor
7
9
  from .server_delete_params import ServerDeleteParams as ServerDeleteParams
10
+ from .gpu_baremetal_flavor_list import GPUBaremetalFlavorList as GPUBaremetalFlavorList
11
+ from .gpu_baremetal_cluster_server import GPUBaremetalClusterServer as GPUBaremetalClusterServer
8
12
  from .server_attach_interface_params import ServerAttachInterfaceParams as ServerAttachInterfaceParams
9
13
  from .server_detach_interface_params import ServerDetachInterfaceParams as ServerDetachInterfaceParams
14
+ from .gpu_baremetal_cluster_server_v1 import GPUBaremetalClusterServerV1 as GPUBaremetalClusterServerV1
15
+ from .gpu_baremetal_cluster_server_v1_list import GPUBaremetalClusterServerV1List as GPUBaremetalClusterServerV1List
@@ -0,0 +1,74 @@
1
+ # File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
2
+
3
+ from typing import List, Optional
4
+ from datetime import datetime
5
+ from typing_extensions import Literal
6
+
7
+ from ..tag import Tag
8
+ from ...._models import BaseModel
9
+
10
+ __all__ = ["GPUBaremetalClusterServer", "SecurityGroup"]
11
+
12
+
13
+ class SecurityGroup(BaseModel):
14
+ name: str
15
+ """Name."""
16
+
17
+
18
+ class GPUBaremetalClusterServer(BaseModel):
19
+ id: str
20
+ """Server unique identifier"""
21
+
22
+ created_at: datetime
23
+ """Server creation date and time"""
24
+
25
+ flavor: str
26
+ """Unique flavor identifier"""
27
+
28
+ image_id: Optional[str] = None
29
+ """Server's image UUID"""
30
+
31
+ ip_addresses: List[str]
32
+ """List of IP addresses"""
33
+
34
+ name: str
35
+ """Server's name generated using cluster's name"""
36
+
37
+ security_groups: List[SecurityGroup]
38
+ """Security groups names"""
39
+
40
+ ssh_key_name: Optional[str] = None
41
+ """SSH key pair assigned to the server"""
42
+
43
+ status: Literal[
44
+ "ACTIVE",
45
+ "BUILD",
46
+ "DELETED",
47
+ "ERROR",
48
+ "HARD_REBOOT",
49
+ "MIGRATING",
50
+ "PASSWORD",
51
+ "PAUSED",
52
+ "REBOOT",
53
+ "REBUILD",
54
+ "RESCUE",
55
+ "RESIZE",
56
+ "REVERT_RESIZE",
57
+ "SHELVED",
58
+ "SHELVED_OFFLOADED",
59
+ "SHUTOFF",
60
+ "SOFT_DELETED",
61
+ "SUSPENDED",
62
+ "UNKNOWN",
63
+ "VERIFY_RESIZE",
64
+ ]
65
+ """Current server status"""
66
+
67
+ tags: List[Tag]
68
+ """User defined tags"""
69
+
70
+ task_id: Optional[str] = None
71
+ """Identifier of the task currently modifying the GPU cluster"""
72
+
73
+ updated_at: datetime
74
+ """Server update date and time"""