gcore 0.13.0__py3-none-any.whl → 0.15.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 (345) hide show
  1. gcore/__init__.py +3 -1
  2. gcore/_base_client.py +9 -9
  3. gcore/_client.py +25 -10
  4. gcore/_models.py +10 -4
  5. gcore/_qs.py +7 -7
  6. gcore/_types.py +18 -11
  7. gcore/_utils/_transform.py +2 -2
  8. gcore/_utils/_utils.py +4 -4
  9. gcore/_version.py +1 -1
  10. gcore/pagination.py +137 -0
  11. gcore/resources/__init__.py +14 -0
  12. gcore/resources/cdn/__init__.py +201 -0
  13. gcore/resources/cdn/audit_log.py +406 -0
  14. gcore/resources/cdn/cdn.py +957 -0
  15. gcore/resources/cdn/certificates.py +1062 -0
  16. gcore/resources/cdn/ip_ranges.py +224 -0
  17. gcore/resources/cdn/logs/__init__.py +33 -0
  18. gcore/resources/cdn/logs/logs.py +1424 -0
  19. gcore/resources/cdn/logs/settings.py +1081 -0
  20. gcore/resources/cdn/logs_uploader/__init__.py +61 -0
  21. gcore/resources/cdn/logs_uploader/configs.py +868 -0
  22. gcore/resources/cdn/logs_uploader/logs_uploader.py +166 -0
  23. gcore/resources/cdn/logs_uploader/policies.py +1060 -0
  24. gcore/resources/cdn/logs_uploader/targets.py +811 -0
  25. gcore/resources/cdn/metrics.py +419 -0
  26. gcore/resources/cdn/network_capacity.py +139 -0
  27. gcore/resources/cdn/origin_groups.py +1496 -0
  28. gcore/resources/cdn/resources/__init__.py +47 -0
  29. gcore/resources/cdn/resources/resources.py +2060 -0
  30. gcore/resources/cdn/resources/rules.py +1027 -0
  31. gcore/resources/cdn/resources/shield.py +259 -0
  32. gcore/resources/cdn/rule_templates.py +883 -0
  33. gcore/resources/cdn/shields.py +139 -0
  34. gcore/resources/cdn/statistics.py +1408 -0
  35. gcore/resources/cdn/trusted_ca_certificates.py +592 -0
  36. gcore/resources/cloud/audit_logs.py +33 -29
  37. gcore/resources/cloud/baremetal/flavors.py +21 -17
  38. gcore/resources/cloud/baremetal/images.py +19 -15
  39. gcore/resources/cloud/baremetal/servers.py +141 -119
  40. gcore/resources/cloud/billing_reservations.py +41 -33
  41. gcore/resources/cloud/cloud.py +24 -0
  42. gcore/resources/cloud/cost_reports.py +149 -119
  43. gcore/resources/cloud/file_shares/access_rules.py +25 -13
  44. gcore/resources/cloud/file_shares/file_shares.py +107 -71
  45. gcore/resources/cloud/floating_ips.py +101 -59
  46. gcore/resources/cloud/gpu_baremetal_clusters/flavors.py +13 -9
  47. gcore/resources/cloud/gpu_baremetal_clusters/gpu_baremetal_clusters.py +275 -65
  48. gcore/resources/cloud/gpu_baremetal_clusters/images.py +69 -53
  49. gcore/resources/cloud/gpu_baremetal_clusters/interfaces.py +9 -5
  50. gcore/resources/cloud/gpu_baremetal_clusters/servers.py +151 -127
  51. gcore/resources/cloud/inference/api_keys.py +51 -31
  52. gcore/resources/cloud/inference/applications/deployments.py +49 -31
  53. gcore/resources/cloud/inference/applications/templates.py +17 -9
  54. gcore/resources/cloud/inference/deployments/deployments.py +171 -139
  55. gcore/resources/cloud/inference/deployments/logs.py +17 -13
  56. gcore/resources/cloud/inference/flavors.py +21 -13
  57. gcore/resources/cloud/inference/inference.py +9 -5
  58. gcore/resources/cloud/inference/registry_credentials.py +45 -25
  59. gcore/resources/cloud/inference/secrets.py +45 -25
  60. gcore/resources/cloud/instances/flavors.py +17 -13
  61. gcore/resources/cloud/instances/images.py +153 -129
  62. gcore/resources/cloud/instances/instances.py +287 -213
  63. gcore/resources/cloud/instances/interfaces.py +165 -161
  64. gcore/resources/cloud/instances/metrics.py +9 -5
  65. gcore/resources/cloud/ip_ranges.py +25 -15
  66. gcore/resources/cloud/k8s/clusters/clusters.py +151 -87
  67. gcore/resources/cloud/k8s/clusters/nodes.py +19 -11
  68. gcore/resources/cloud/k8s/clusters/pools/nodes.py +19 -11
  69. gcore/resources/cloud/k8s/clusters/pools/pools.py +83 -59
  70. gcore/resources/cloud/k8s/flavors.py +13 -9
  71. gcore/resources/cloud/k8s/k8s.py +9 -5
  72. gcore/resources/cloud/load_balancers/flavors.py +11 -7
  73. gcore/resources/cloud/load_balancers/l7_policies/l7_policies.py +103 -83
  74. gcore/resources/cloud/load_balancers/l7_policies/rules.py +77 -57
  75. gcore/resources/cloud/load_balancers/listeners.py +125 -105
  76. gcore/resources/cloud/load_balancers/load_balancers.py +155 -123
  77. gcore/resources/cloud/load_balancers/metrics.py +9 -5
  78. gcore/resources/cloud/load_balancers/pools/health_monitors.py +25 -17
  79. gcore/resources/cloud/load_balancers/pools/members.py +31 -23
  80. gcore/resources/cloud/load_balancers/pools/pools.py +155 -129
  81. gcore/resources/cloud/load_balancers/statuses.py +17 -9
  82. gcore/resources/cloud/networks/networks.py +79 -55
  83. gcore/resources/cloud/networks/routers.py +75 -47
  84. gcore/resources/cloud/networks/subnets.py +109 -87
  85. gcore/resources/cloud/placement_groups.py +33 -17
  86. gcore/resources/cloud/projects.py +53 -41
  87. gcore/resources/cloud/quotas/quotas.py +25 -13
  88. gcore/resources/cloud/quotas/requests.py +41 -25
  89. gcore/resources/cloud/regions.py +25 -23
  90. gcore/resources/cloud/registries/artifacts.py +17 -9
  91. gcore/resources/cloud/registries/registries.py +55 -29
  92. gcore/resources/cloud/registries/repositories.py +17 -9
  93. gcore/resources/cloud/registries/tags.py +9 -5
  94. gcore/resources/cloud/registries/users.py +65 -35
  95. gcore/resources/cloud/reserved_fixed_ips/reserved_fixed_ips.py +233 -108
  96. gcore/resources/cloud/reserved_fixed_ips/vip.py +45 -25
  97. gcore/resources/cloud/secrets.py +43 -27
  98. gcore/resources/cloud/security_groups/rules.py +55 -43
  99. gcore/resources/cloud/security_groups/security_groups.py +79 -47
  100. gcore/resources/cloud/ssh_keys.py +51 -31
  101. gcore/resources/cloud/tasks.py +57 -45
  102. gcore/resources/cloud/usage_reports.py +27 -23
  103. gcore/resources/cloud/users/role_assignments.py +49 -33
  104. gcore/resources/cloud/volumes.py +237 -201
  105. gcore/resources/dns/dns.py +17 -13
  106. gcore/resources/dns/locations.py +29 -17
  107. gcore/resources/dns/metrics.py +13 -9
  108. gcore/resources/dns/pickers/pickers.py +5 -5
  109. gcore/resources/dns/pickers/presets.py +9 -5
  110. gcore/resources/dns/zones/dnssec.py +19 -11
  111. gcore/resources/dns/zones/rrsets.py +149 -91
  112. gcore/resources/dns/zones/zones.py +245 -187
  113. gcore/resources/fastedge/apps/apps.py +105 -89
  114. gcore/resources/fastedge/apps/logs.py +25 -21
  115. gcore/resources/fastedge/binaries.py +33 -17
  116. gcore/resources/fastedge/fastedge.py +5 -5
  117. gcore/resources/fastedge/kv_stores.py +43 -31
  118. gcore/resources/fastedge/secrets.py +69 -45
  119. gcore/resources/fastedge/statistics.py +25 -17
  120. gcore/resources/fastedge/templates.py +59 -39
  121. gcore/resources/iam/api_tokens.py +47 -29
  122. gcore/resources/iam/iam.py +5 -5
  123. gcore/resources/iam/users.py +97 -65
  124. gcore/resources/security/bgp_announces.py +27 -19
  125. gcore/resources/security/events.py +23 -19
  126. gcore/resources/security/profile_templates.py +9 -5
  127. gcore/resources/security/profiles.py +69 -45
  128. gcore/resources/storage/buckets/buckets.py +37 -25
  129. gcore/resources/storage/buckets/cors.py +19 -11
  130. gcore/resources/storage/buckets/lifecycle.py +19 -11
  131. gcore/resources/storage/buckets/policy.py +25 -13
  132. gcore/resources/storage/credentials.py +19 -15
  133. gcore/resources/storage/locations.py +13 -9
  134. gcore/resources/storage/statistics.py +39 -31
  135. gcore/resources/storage/storage.py +105 -69
  136. gcore/resources/streaming/ai_tasks.py +307 -197
  137. gcore/resources/streaming/broadcasts.py +63 -35
  138. gcore/resources/streaming/directories.py +65 -39
  139. gcore/resources/streaming/players.py +47 -31
  140. gcore/resources/streaming/playlists.py +189 -123
  141. gcore/resources/streaming/quality_sets.py +69 -39
  142. gcore/resources/streaming/restreams.py +47 -27
  143. gcore/resources/streaming/statistics.py +613 -407
  144. gcore/resources/streaming/streams/overlays.py +107 -67
  145. gcore/resources/streaming/streams/streams.py +403 -263
  146. gcore/resources/streaming/videos/subtitles.py +131 -75
  147. gcore/resources/streaming/videos/videos.py +429 -279
  148. gcore/resources/waap/advanced_rules.py +9 -5
  149. gcore/resources/waap/custom_page_sets.py +99 -75
  150. gcore/resources/waap/domains/advanced_rules.py +157 -99
  151. gcore/resources/waap/domains/api_discovery.py +71 -47
  152. gcore/resources/waap/domains/api_path_groups.py +9 -5
  153. gcore/resources/waap/domains/api_paths.py +79 -83
  154. gcore/resources/waap/domains/custom_rules.py +89 -59
  155. gcore/resources/waap/domains/domains.py +59 -41
  156. gcore/resources/waap/domains/firewall_rules.py +83 -55
  157. gcore/resources/waap/domains/insight_silences.py +59 -39
  158. gcore/resources/waap/domains/insights.py +39 -27
  159. gcore/resources/waap/domains/settings.py +21 -13
  160. gcore/resources/waap/domains/statistics.py +99 -75
  161. gcore/resources/waap/insights.py +23 -21
  162. gcore/resources/waap/ip_info/ip_info.py +65 -33
  163. gcore/resources/waap/ip_info/metrics.py +11 -7
  164. gcore/resources/waap/organizations.py +17 -13
  165. gcore/resources/waap/statistics.py +9 -5
  166. gcore/resources/waap/tags.py +17 -17
  167. gcore/resources/waap/waap.py +5 -5
  168. gcore/types/cdn/__init__.py +80 -0
  169. gcore/types/cdn/audit_log_list_params.py +73 -0
  170. gcore/types/cdn/ca_certificate.py +53 -0
  171. gcore/types/cdn/ca_certificate_list.py +10 -0
  172. gcore/types/cdn/cdn_account.py +86 -0
  173. gcore/types/cdn/cdn_account_limits.py +27 -0
  174. gcore/types/cdn/cdn_audit_log_entry.py +66 -0
  175. gcore/types/cdn/cdn_available_features.py +46 -0
  176. gcore/types/cdn/cdn_list_purge_statuses_params.py +67 -0
  177. gcore/types/cdn/cdn_log_entry.py +70 -0
  178. gcore/types/cdn/cdn_metrics.py +22 -0
  179. gcore/types/cdn/cdn_metrics_groups.py +13 -0
  180. gcore/types/cdn/cdn_metrics_values.py +19 -0
  181. gcore/types/cdn/cdn_resource.py +1997 -0
  182. gcore/types/cdn/cdn_resource_list.py +10 -0
  183. gcore/types/cdn/cdn_update_account_params.py +15 -0
  184. gcore/types/cdn/certificate_create_params.py +51 -0
  185. gcore/types/cdn/certificate_get_status_params.py +14 -0
  186. gcore/types/cdn/certificate_list_params.py +29 -0
  187. gcore/types/cdn/certificate_replace_params.py +39 -0
  188. gcore/types/cdn/log_download_params.py +279 -0
  189. gcore/types/cdn/log_list_params.py +273 -0
  190. gcore/types/cdn/logs/__init__.py +7 -0
  191. gcore/types/cdn/logs/log_settings.py +172 -0
  192. gcore/types/cdn/logs/setting_create_params.py +200 -0
  193. gcore/types/cdn/logs/setting_update_params.py +200 -0
  194. gcore/types/cdn/logs_aggregated_stats.py +23 -0
  195. gcore/types/cdn/logs_uploader/__init__.py +23 -0
  196. gcore/types/cdn/logs_uploader/config_create_params.py +32 -0
  197. gcore/types/cdn/logs_uploader/config_list_params.py +16 -0
  198. gcore/types/cdn/logs_uploader/config_replace_params.py +32 -0
  199. gcore/types/cdn/logs_uploader/config_update_params.py +32 -0
  200. gcore/types/cdn/logs_uploader/logs_uploader_config.py +51 -0
  201. gcore/types/cdn/logs_uploader/logs_uploader_config_list.py +10 -0
  202. gcore/types/cdn/logs_uploader/logs_uploader_policy.py +73 -0
  203. gcore/types/cdn/logs_uploader/logs_uploader_policy_list.py +10 -0
  204. gcore/types/cdn/logs_uploader/logs_uploader_target.py +236 -0
  205. gcore/types/cdn/logs_uploader/logs_uploader_target_list.py +10 -0
  206. gcore/types/cdn/logs_uploader/policy_create_params.py +61 -0
  207. gcore/types/cdn/logs_uploader/policy_list_fields_response.py +8 -0
  208. gcore/types/cdn/logs_uploader/policy_list_params.py +16 -0
  209. gcore/types/cdn/logs_uploader/policy_replace_params.py +61 -0
  210. gcore/types/cdn/logs_uploader/policy_update_params.py +61 -0
  211. gcore/types/cdn/logs_uploader/target_create_params.py +249 -0
  212. gcore/types/cdn/logs_uploader/target_list_params.py +16 -0
  213. gcore/types/cdn/logs_uploader/target_replace_params.py +249 -0
  214. gcore/types/cdn/logs_uploader/target_update_params.py +249 -0
  215. gcore/types/cdn/logs_uploader_validation.py +23 -0
  216. gcore/types/cdn/metric_list_params.py +168 -0
  217. gcore/types/cdn/network_capacity.py +22 -0
  218. gcore/types/cdn/origin_group_create_params.py +184 -0
  219. gcore/types/cdn/origin_group_list_params.py +24 -0
  220. gcore/types/cdn/origin_group_replace_params.py +190 -0
  221. gcore/types/cdn/origin_group_update_params.py +190 -0
  222. gcore/types/cdn/origin_groups.py +212 -0
  223. gcore/types/cdn/origin_groups_list.py +10 -0
  224. gcore/types/cdn/public_ip_list.py +15 -0
  225. gcore/types/cdn/public_network_list.py +15 -0
  226. gcore/types/cdn/purge_status.py +55 -0
  227. gcore/types/cdn/resource_aggregated_stats.py +80 -0
  228. gcore/types/cdn/resource_create_params.py +1845 -0
  229. gcore/types/cdn/resource_list_params.py +107 -0
  230. gcore/types/cdn/resource_prefetch_params.py +17 -0
  231. gcore/types/cdn/resource_purge_params.py +71 -0
  232. gcore/types/cdn/resource_replace_params.py +1823 -0
  233. gcore/types/cdn/resource_update_params.py +1814 -0
  234. gcore/types/cdn/resource_usage_stats.py +111 -0
  235. gcore/types/cdn/resources/__init__.py +11 -0
  236. gcore/types/cdn/resources/cdn_resource_rule.py +1715 -0
  237. gcore/types/cdn/resources/origin_shielding.py +15 -0
  238. gcore/types/cdn/resources/rule_create_params.py +1672 -0
  239. gcore/types/cdn/resources/rule_list_response.py +10 -0
  240. gcore/types/cdn/resources/rule_replace_params.py +1674 -0
  241. gcore/types/cdn/resources/rule_update_params.py +1674 -0
  242. gcore/types/cdn/resources/shield_replace_params.py +16 -0
  243. gcore/types/cdn/rule_template.py +1686 -0
  244. gcore/types/cdn/rule_template_create_params.py +1656 -0
  245. gcore/types/cdn/rule_template_list.py +10 -0
  246. gcore/types/cdn/rule_template_replace_params.py +1656 -0
  247. gcore/types/cdn/rule_template_update_params.py +1656 -0
  248. gcore/types/cdn/shield_aggregated_stats.py +23 -0
  249. gcore/types/cdn/shield_list_response.py +25 -0
  250. gcore/types/cdn/ssl_detail.py +62 -0
  251. gcore/types/cdn/ssl_detail_list.py +10 -0
  252. gcore/types/cdn/ssl_request_status.py +135 -0
  253. gcore/types/cdn/statistic_get_logs_usage_aggregated_params.py +42 -0
  254. gcore/types/cdn/statistic_get_logs_usage_series_params.py +35 -0
  255. gcore/types/cdn/statistic_get_resource_usage_aggregated_params.py +151 -0
  256. gcore/types/cdn/statistic_get_resource_usage_series_params.py +131 -0
  257. gcore/types/cdn/statistic_get_shield_usage_aggregated_params.py +42 -0
  258. gcore/types/cdn/statistic_get_shield_usage_series_params.py +25 -0
  259. gcore/types/cdn/trusted_ca_certificate_create_params.py +23 -0
  260. gcore/types/cdn/trusted_ca_certificate_list_params.py +29 -0
  261. gcore/types/cdn/trusted_ca_certificate_replace_params.py +15 -0
  262. gcore/types/cdn/usage_series_stats.py +31 -0
  263. gcore/types/cloud/__init__.py +2 -0
  264. gcore/types/cloud/file_share.py +4 -0
  265. gcore/types/cloud/file_share_create_params.py +20 -0
  266. gcore/types/cloud/file_share_update_params.py +40 -3
  267. gcore/types/cloud/floating_ip_update_params.py +3 -1
  268. gcore/types/cloud/gpu_baremetal_cluster_action_params.py +46 -0
  269. gcore/types/cloud/gpu_baremetal_clusters/gpu_baremetal_flavor.py +12 -0
  270. gcore/types/cloud/inference/inference_deployment.py +3 -1
  271. gcore/types/cloud/instance_create_params.py +3 -1
  272. gcore/types/cloud/k8s/cluster_create_params.py +46 -4
  273. gcore/types/cloud/k8s/cluster_update_params.py +60 -6
  274. gcore/types/cloud/k8s/clusters/pool_update_params.py +1 -1
  275. gcore/types/cloud/k8s/k8s_cluster.py +40 -3
  276. gcore/types/cloud/load_balancer_update_params.py +3 -1
  277. gcore/types/cloud/network_update_params.py +3 -1
  278. gcore/types/cloud/networks/subnet_update_params.py +3 -1
  279. gcore/types/cloud/quota_get_all_response.py +8 -8
  280. gcore/types/cloud/quota_get_by_region_response.py +8 -8
  281. gcore/types/cloud/quotas/request_create_params.py +4 -4
  282. gcore/types/cloud/quotas/request_get_response.py +4 -4
  283. gcore/types/cloud/quotas/request_list_response.py +4 -4
  284. gcore/types/cloud/registries/user_create_multiple_params.py +5 -3
  285. gcore/types/cloud/registries/user_create_params.py +5 -3
  286. gcore/types/cloud/registry_create_params.py +5 -3
  287. gcore/types/cloud/reserved_fixed_ip_update_params.py +16 -0
  288. gcore/types/cloud/security_group_update_params.py +3 -1
  289. gcore/types/cloud/ssh_key_created.py +6 -3
  290. gcore/types/cloud/volume_update_params.py +3 -1
  291. gcore/types/dns/zone_get_statistics_params.py +12 -9
  292. gcore/types/dns/zone_get_statistics_response.py +3 -1
  293. gcore/types/dns/zone_import_params.py +21 -15
  294. gcore/types/dns/zones/dns_output_rrset.py +7 -3
  295. gcore/types/iam/account_overview.py +31 -28
  296. gcore/types/iam/api_token.py +24 -24
  297. gcore/types/iam/api_token_create_params.py +2 -1
  298. gcore/types/iam/api_token_list.py +24 -24
  299. gcore/types/iam/user.py +7 -2
  300. gcore/types/iam/user_detailed.py +22 -17
  301. gcore/types/iam/user_invite.py +2 -4
  302. gcore/types/iam/user_invite_params.py +4 -1
  303. gcore/types/iam/user_update.py +22 -17
  304. gcore/types/iam/user_update_params.py +7 -2
  305. gcore/types/streaming/ai_contentmoderation_hardnudity.py +6 -4
  306. gcore/types/streaming/ai_contentmoderation_nsfw.py +6 -4
  307. gcore/types/streaming/ai_contentmoderation_softnudity.py +6 -4
  308. gcore/types/streaming/ai_contentmoderation_sport.py +6 -4
  309. gcore/types/streaming/ai_task.py +20 -11
  310. gcore/types/streaming/ai_task_create_params.py +20 -11
  311. gcore/types/streaming/ai_task_get_response.py +5 -4
  312. gcore/types/streaming/ai_task_list_params.py +11 -5
  313. gcore/types/streaming/clip.py +33 -22
  314. gcore/types/streaming/create_video_param.py +75 -43
  315. gcore/types/streaming/playlist.py +7 -5
  316. gcore/types/streaming/playlist_create_params.py +7 -5
  317. gcore/types/streaming/playlist_update_params.py +7 -5
  318. gcore/types/streaming/playlist_video.py +75 -43
  319. gcore/types/streaming/statistic_get_unique_viewers_cdn_params.py +7 -4
  320. gcore/types/streaming/stream.py +207 -136
  321. gcore/types/streaming/stream_create_clip_params.py +33 -22
  322. gcore/types/streaming/stream_create_params.py +41 -24
  323. gcore/types/streaming/stream_update_params.py +41 -24
  324. gcore/types/streaming/video.py +138 -76
  325. gcore/types/streaming/video_list_params.py +4 -2
  326. gcore/types/streaming/video_update_params.py +75 -43
  327. gcore/types/waap/domain_update_params.py +2 -2
  328. gcore/types/waap/domains/advanced_rule_create_params.py +26 -18
  329. gcore/types/waap/domains/advanced_rule_list_params.py +10 -7
  330. gcore/types/waap/domains/advanced_rule_update_params.py +22 -17
  331. gcore/types/waap/domains/api_path_create_params.py +0 -3
  332. gcore/types/waap/domains/api_path_update_params.py +1 -3
  333. gcore/types/waap/domains/custom_rule_create_params.py +36 -35
  334. gcore/types/waap/domains/custom_rule_update_params.py +31 -33
  335. gcore/types/waap/domains/firewall_rule_create_params.py +6 -6
  336. gcore/types/waap/domains/firewall_rule_update_params.py +5 -5
  337. gcore/types/waap/domains/waap_advanced_rule.py +17 -9
  338. gcore/types/waap/domains/waap_custom_rule.py +5 -2
  339. gcore/types/waap/domains/waap_firewall_rule.py +1 -1
  340. gcore/types/waap/domains/waap_insight.py +1 -1
  341. gcore/types/waap/insight_list_types_params.py +1 -1
  342. {gcore-0.13.0.dist-info → gcore-0.15.0.dist-info}/METADATA +1 -1
  343. {gcore-0.13.0.dist-info → gcore-0.15.0.dist-info}/RECORD +345 -224
  344. {gcore-0.13.0.dist-info → gcore-0.15.0.dist-info}/WHEEL +0 -0
  345. {gcore-0.13.0.dist-info → gcore-0.15.0.dist-info}/licenses/LICENSE +0 -0
@@ -31,7 +31,7 @@ from .servers import (
31
31
  ServersResourceWithStreamingResponse,
32
32
  AsyncServersResourceWithStreamingResponse,
33
33
  )
34
- from ...._types import NOT_GIVEN, Body, Query, Headers, NotGiven, SequenceNotStr
34
+ from ...._types import NOT_GIVEN, Body, Omit, Query, Headers, NotGiven, SequenceNotStr, omit, not_given
35
35
  from ...._utils import maybe_transform, async_maybe_transform
36
36
  from ...._compat import cached_property
37
37
  from .interfaces import (
@@ -52,6 +52,7 @@ from ...._response import (
52
52
  from ....pagination import SyncOffsetPage, AsyncOffsetPage
53
53
  from ....types.cloud import (
54
54
  gpu_baremetal_cluster_list_params,
55
+ gpu_baremetal_cluster_action_params,
55
56
  gpu_baremetal_cluster_create_params,
56
57
  gpu_baremetal_cluster_delete_params,
57
58
  gpu_baremetal_cluster_resize_params,
@@ -59,6 +60,7 @@ from ....types.cloud import (
59
60
  )
60
61
  from ...._base_client import AsyncPaginator, make_request_options
61
62
  from ....types.cloud.task_id_list import TaskIDList
63
+ from ....types.cloud.tag_update_map_param import TagUpdateMapParam
62
64
  from ....types.cloud.gpu_baremetal_cluster import GPUBaremetalCluster
63
65
  from ....types.cloud.gpu_baremetal_clusters.gpu_baremetal_cluster_server_v1_list import GPUBaremetalClusterServerV1List
64
66
 
@@ -111,13 +113,13 @@ class GPUBaremetalClustersResource(SyncAPIResource):
111
113
  name: str,
112
114
  servers_count: int,
113
115
  servers_settings: gpu_baremetal_cluster_create_params.ServersSettings,
114
- tags: Dict[str, str] | NotGiven = NOT_GIVEN,
116
+ tags: Dict[str, str] | Omit = omit,
115
117
  # Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
116
118
  # The extra values given here take precedence over values defined on the client or passed to this method.
117
119
  extra_headers: Headers | None = None,
118
120
  extra_query: Query | None = None,
119
121
  extra_body: Body | None = None,
120
- timeout: float | httpx.Timeout | None | NotGiven = NOT_GIVEN,
122
+ timeout: float | httpx.Timeout | None | NotGiven = not_given,
121
123
  ) -> TaskIDList:
122
124
  """
123
125
  Create a new bare metal GPU cluster with the specified configuration.
@@ -156,7 +158,9 @@ class GPUBaremetalClustersResource(SyncAPIResource):
156
158
  if region_id is None:
157
159
  region_id = self._client._get_cloud_region_id_path_param()
158
160
  return self._post(
159
- f"/cloud/v3/gpu/baremetal/{project_id}/{region_id}/clusters",
161
+ f"/cloud/v3/gpu/baremetal/{project_id}/{region_id}/clusters"
162
+ if self._client._base_url_overridden
163
+ else f"https://api.gcore.com//cloud/v3/gpu/baremetal/{project_id}/{region_id}/clusters",
160
164
  body=maybe_transform(
161
165
  {
162
166
  "flavor": flavor,
@@ -179,15 +183,15 @@ class GPUBaremetalClustersResource(SyncAPIResource):
179
183
  *,
180
184
  project_id: int | None = None,
181
185
  region_id: int | None = None,
182
- limit: int | NotGiven = NOT_GIVEN,
183
- managed_by: List[Literal["k8s", "user"]] | NotGiven = NOT_GIVEN,
184
- offset: int | NotGiven = NOT_GIVEN,
186
+ limit: int | Omit = omit,
187
+ managed_by: List[Literal["k8s", "user"]] | Omit = omit,
188
+ offset: int | Omit = omit,
185
189
  # Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
186
190
  # The extra values given here take precedence over values defined on the client or passed to this method.
187
191
  extra_headers: Headers | None = None,
188
192
  extra_query: Query | None = None,
189
193
  extra_body: Body | None = None,
190
- timeout: float | httpx.Timeout | None | NotGiven = NOT_GIVEN,
194
+ timeout: float | httpx.Timeout | None | NotGiven = not_given,
191
195
  ) -> SyncOffsetPage[GPUBaremetalCluster]:
192
196
  """
193
197
  List all bare metal GPU clusters in the specified project and region.
@@ -220,7 +224,9 @@ class GPUBaremetalClustersResource(SyncAPIResource):
220
224
  if region_id is None:
221
225
  region_id = self._client._get_cloud_region_id_path_param()
222
226
  return self._get_api_list(
223
- f"/cloud/v3/gpu/baremetal/{project_id}/{region_id}/clusters",
227
+ f"/cloud/v3/gpu/baremetal/{project_id}/{region_id}/clusters"
228
+ if self._client._base_url_overridden
229
+ else f"https://api.gcore.com//cloud/v3/gpu/baremetal/{project_id}/{region_id}/clusters",
224
230
  page=SyncOffsetPage[GPUBaremetalCluster],
225
231
  options=make_request_options(
226
232
  extra_headers=extra_headers,
@@ -245,16 +251,16 @@ class GPUBaremetalClustersResource(SyncAPIResource):
245
251
  *,
246
252
  project_id: int | None = None,
247
253
  region_id: int | None = None,
248
- all_floating_ips: bool | NotGiven = NOT_GIVEN,
249
- all_reserved_fixed_ips: bool | NotGiven = NOT_GIVEN,
250
- floating_ip_ids: SequenceNotStr[str] | NotGiven = NOT_GIVEN,
251
- reserved_fixed_ip_ids: SequenceNotStr[str] | NotGiven = NOT_GIVEN,
254
+ all_floating_ips: bool | Omit = omit,
255
+ all_reserved_fixed_ips: bool | Omit = omit,
256
+ floating_ip_ids: SequenceNotStr[str] | Omit = omit,
257
+ reserved_fixed_ip_ids: SequenceNotStr[str] | Omit = omit,
252
258
  # Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
253
259
  # The extra values given here take precedence over values defined on the client or passed to this method.
254
260
  extra_headers: Headers | None = None,
255
261
  extra_query: Query | None = None,
256
262
  extra_body: Body | None = None,
257
- timeout: float | httpx.Timeout | None | NotGiven = NOT_GIVEN,
263
+ timeout: float | httpx.Timeout | None | NotGiven = not_given,
258
264
  ) -> TaskIDList:
259
265
  """
260
266
  Delete a bare metal GPU cluster and all its associated resources.
@@ -291,7 +297,9 @@ class GPUBaremetalClustersResource(SyncAPIResource):
291
297
  if not cluster_id:
292
298
  raise ValueError(f"Expected a non-empty value for `cluster_id` but received {cluster_id!r}")
293
299
  return self._delete(
294
- f"/cloud/v3/gpu/baremetal/{project_id}/{region_id}/clusters/{cluster_id}",
300
+ f"/cloud/v3/gpu/baremetal/{project_id}/{region_id}/clusters/{cluster_id}"
301
+ if self._client._base_url_overridden
302
+ else f"https://api.gcore.com//cloud/v3/gpu/baremetal/{project_id}/{region_id}/clusters/{cluster_id}",
295
303
  options=make_request_options(
296
304
  extra_headers=extra_headers,
297
305
  extra_query=extra_query,
@@ -310,6 +318,88 @@ class GPUBaremetalClustersResource(SyncAPIResource):
310
318
  cast_to=TaskIDList,
311
319
  )
312
320
 
321
+ def action(
322
+ self,
323
+ cluster_id: str,
324
+ *,
325
+ project_id: int | None = None,
326
+ region_id: int | None = None,
327
+ action: Literal["update_tags"],
328
+ tags: Optional[TagUpdateMapParam],
329
+ # Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
330
+ # The extra values given here take precedence over values defined on the client or passed to this method.
331
+ extra_headers: Headers | None = None,
332
+ extra_query: Query | None = None,
333
+ extra_body: Body | None = None,
334
+ timeout: float | httpx.Timeout | None | NotGiven = not_given,
335
+ ) -> TaskIDList:
336
+ """Perform a specific action on a baremetal GPU cluster.
337
+
338
+ Available actions: update
339
+ tags.
340
+
341
+ Args:
342
+ project_id: Project ID
343
+
344
+ region_id: Region ID
345
+
346
+ cluster_id: Cluster unique identifier
347
+
348
+ action: Action name
349
+
350
+ tags: Update key-value tags using JSON Merge Patch semantics (RFC 7386). Provide
351
+ key-value pairs to add or update tags. Set tag values to `null` to remove tags.
352
+ Unspecified tags remain unchanged. Read-only tags are always preserved and
353
+ cannot be modified.
354
+
355
+ **Examples:**
356
+
357
+ - **Add/update tags:**
358
+ `{'tags': {'environment': 'production', 'team': 'backend'}}` adds new tags or
359
+ updates existing ones.
360
+ - **Delete tags:** `{'tags': {'`old_tag`': null}}` removes specific tags.
361
+ - **Remove all tags:** `{'tags': null}` removes all user-managed tags (read-only
362
+ tags are preserved).
363
+ - **Partial update:** `{'tags': {'environment': 'staging'}}` only updates
364
+ specified tags.
365
+ - **Mixed operations:**
366
+ `{'tags': {'environment': 'production', '`cost_center`': 'engineering', '`deprecated_tag`': null}}`
367
+ adds/updates 'environment' and '`cost_center`' while removing
368
+ '`deprecated_tag`', preserving other existing tags.
369
+ - **Replace all:** first delete existing tags with null values, then add new
370
+ ones in the same request.
371
+
372
+ extra_headers: Send extra headers
373
+
374
+ extra_query: Add additional query parameters to the request
375
+
376
+ extra_body: Add additional JSON properties to the request
377
+
378
+ timeout: Override the client-level default timeout for this request, in seconds
379
+ """
380
+ if project_id is None:
381
+ project_id = self._client._get_cloud_project_id_path_param()
382
+ if region_id is None:
383
+ region_id = self._client._get_cloud_region_id_path_param()
384
+ if not cluster_id:
385
+ raise ValueError(f"Expected a non-empty value for `cluster_id` but received {cluster_id!r}")
386
+ return self._post(
387
+ f"/cloud/v3/gpu/baremetal/{project_id}/{region_id}/clusters/{cluster_id}/action"
388
+ if self._client._base_url_overridden
389
+ else f"https://api.gcore.com//cloud/v3/gpu/baremetal/{project_id}/{region_id}/clusters/{cluster_id}/action",
390
+ body=maybe_transform(
391
+ {
392
+ "action": action,
393
+ "tags": tags,
394
+ },
395
+ gpu_baremetal_cluster_action_params.GPUBaremetalClusterActionParams,
396
+ ),
397
+ options=make_request_options(
398
+ extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout
399
+ ),
400
+ cast_to=TaskIDList,
401
+ )
402
+
313
403
  def get(
314
404
  self,
315
405
  cluster_id: str,
@@ -321,7 +411,7 @@ class GPUBaremetalClustersResource(SyncAPIResource):
321
411
  extra_headers: Headers | None = None,
322
412
  extra_query: Query | None = None,
323
413
  extra_body: Body | None = None,
324
- timeout: float | httpx.Timeout | None | NotGiven = NOT_GIVEN,
414
+ timeout: float | httpx.Timeout | None | NotGiven = not_given,
325
415
  ) -> GPUBaremetalCluster:
326
416
  """
327
417
  Get detailed information about a specific bare metal GPU cluster.
@@ -348,7 +438,9 @@ class GPUBaremetalClustersResource(SyncAPIResource):
348
438
  if not cluster_id:
349
439
  raise ValueError(f"Expected a non-empty value for `cluster_id` but received {cluster_id!r}")
350
440
  return self._get(
351
- f"/cloud/v3/gpu/baremetal/{project_id}/{region_id}/clusters/{cluster_id}",
441
+ f"/cloud/v3/gpu/baremetal/{project_id}/{region_id}/clusters/{cluster_id}"
442
+ if self._client._base_url_overridden
443
+ else f"https://api.gcore.com//cloud/v3/gpu/baremetal/{project_id}/{region_id}/clusters/{cluster_id}",
352
444
  options=make_request_options(
353
445
  extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout
354
446
  ),
@@ -366,7 +458,7 @@ class GPUBaremetalClustersResource(SyncAPIResource):
366
458
  extra_headers: Headers | None = None,
367
459
  extra_query: Query | None = None,
368
460
  extra_body: Body | None = None,
369
- timeout: float | httpx.Timeout | None | NotGiven = NOT_GIVEN,
461
+ timeout: float | httpx.Timeout | None | NotGiven = not_given,
370
462
  ) -> GPUBaremetalClusterServerV1List:
371
463
  """
372
464
  Stops and then starts all cluster servers, effectively performing a hard reboot.
@@ -387,7 +479,9 @@ class GPUBaremetalClustersResource(SyncAPIResource):
387
479
  if not cluster_id:
388
480
  raise ValueError(f"Expected a non-empty value for `cluster_id` but received {cluster_id!r}")
389
481
  return self._post(
390
- f"/cloud/v2/ai/clusters/{project_id}/{region_id}/{cluster_id}/powercycle",
482
+ f"/cloud/v2/ai/clusters/{project_id}/{region_id}/{cluster_id}/powercycle"
483
+ if self._client._base_url_overridden
484
+ else f"https://api.gcore.com//cloud/v2/ai/clusters/{project_id}/{region_id}/{cluster_id}/powercycle",
391
485
  options=make_request_options(
392
486
  extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout
393
487
  ),
@@ -405,7 +499,7 @@ class GPUBaremetalClustersResource(SyncAPIResource):
405
499
  extra_headers: Headers | None = None,
406
500
  extra_query: Query | None = None,
407
501
  extra_body: Body | None = None,
408
- timeout: float | httpx.Timeout | None | NotGiven = NOT_GIVEN,
502
+ timeout: float | httpx.Timeout | None | NotGiven = not_given,
409
503
  ) -> GPUBaremetalClusterServerV1List:
410
504
  """
411
505
  Reboot all bare metal GPU cluster servers
@@ -426,7 +520,9 @@ class GPUBaremetalClustersResource(SyncAPIResource):
426
520
  if not cluster_id:
427
521
  raise ValueError(f"Expected a non-empty value for `cluster_id` but received {cluster_id!r}")
428
522
  return self._post(
429
- f"/cloud/v2/ai/clusters/{project_id}/{region_id}/{cluster_id}/reboot",
523
+ f"/cloud/v2/ai/clusters/{project_id}/{region_id}/{cluster_id}/reboot"
524
+ if self._client._base_url_overridden
525
+ else f"https://api.gcore.com//cloud/v2/ai/clusters/{project_id}/{region_id}/{cluster_id}/reboot",
430
526
  options=make_request_options(
431
527
  extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout
432
528
  ),
@@ -440,14 +536,14 @@ class GPUBaremetalClustersResource(SyncAPIResource):
440
536
  project_id: int | None = None,
441
537
  region_id: int | None = None,
442
538
  nodes: SequenceNotStr[str],
443
- image_id: Optional[str] | NotGiven = NOT_GIVEN,
444
- user_data: Optional[str] | NotGiven = NOT_GIVEN,
539
+ image_id: Optional[str] | Omit = omit,
540
+ user_data: Optional[str] | Omit = omit,
445
541
  # Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
446
542
  # The extra values given here take precedence over values defined on the client or passed to this method.
447
543
  extra_headers: Headers | None = None,
448
544
  extra_query: Query | None = None,
449
545
  extra_body: Body | None = None,
450
- timeout: float | httpx.Timeout | None | NotGiven = NOT_GIVEN,
546
+ timeout: float | httpx.Timeout | None | NotGiven = not_given,
451
547
  ) -> TaskIDList:
452
548
  """Rebuild one or more nodes in a GPU cluster.
453
549
 
@@ -478,7 +574,9 @@ class GPUBaremetalClustersResource(SyncAPIResource):
478
574
  if not cluster_id:
479
575
  raise ValueError(f"Expected a non-empty value for `cluster_id` but received {cluster_id!r}")
480
576
  return self._post(
481
- f"/cloud/v1/ai/clusters/gpu/{project_id}/{region_id}/{cluster_id}/rebuild",
577
+ f"/cloud/v1/ai/clusters/gpu/{project_id}/{region_id}/{cluster_id}/rebuild"
578
+ if self._client._base_url_overridden
579
+ else f"https://api.gcore.com//cloud/v1/ai/clusters/gpu/{project_id}/{region_id}/{cluster_id}/rebuild",
482
580
  body=maybe_transform(
483
581
  {
484
582
  "nodes": nodes,
@@ -505,7 +603,7 @@ class GPUBaremetalClustersResource(SyncAPIResource):
505
603
  extra_headers: Headers | None = None,
506
604
  extra_query: Query | None = None,
507
605
  extra_body: Body | None = None,
508
- timeout: float | httpx.Timeout | None | NotGiven = NOT_GIVEN,
606
+ timeout: float | httpx.Timeout | None | NotGiven = not_given,
509
607
  ) -> TaskIDList:
510
608
  """Change the number of nodes in a GPU cluster.
511
609
 
@@ -530,7 +628,9 @@ class GPUBaremetalClustersResource(SyncAPIResource):
530
628
  if not cluster_id:
531
629
  raise ValueError(f"Expected a non-empty value for `cluster_id` but received {cluster_id!r}")
532
630
  return self._post(
533
- f"/cloud/v1/ai/clusters/gpu/{project_id}/{region_id}/{cluster_id}/resize",
631
+ f"/cloud/v1/ai/clusters/gpu/{project_id}/{region_id}/{cluster_id}/resize"
632
+ if self._client._base_url_overridden
633
+ else f"https://api.gcore.com//cloud/v1/ai/clusters/gpu/{project_id}/{region_id}/{cluster_id}/resize",
534
634
  body=maybe_transform(
535
635
  {"instances_count": instances_count},
536
636
  gpu_baremetal_cluster_resize_params.GPUBaremetalClusterResizeParams,
@@ -551,8 +651,8 @@ class GPUBaremetalClustersResource(SyncAPIResource):
551
651
  name: str,
552
652
  servers_count: int,
553
653
  servers_settings: gpu_baremetal_cluster_create_params.ServersSettings,
554
- tags: Dict[str, str] | NotGiven = NOT_GIVEN,
555
- polling_interval_seconds: int | NotGiven = NOT_GIVEN,
654
+ tags: Dict[str, str] | Omit = omit,
655
+ polling_interval_seconds: int | Omit = omit,
556
656
  # Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
557
657
  # The extra values given here take precedence over values defined on the client or passed to this method.
558
658
  extra_headers: Headers | None = None,
@@ -606,9 +706,9 @@ class GPUBaremetalClustersResource(SyncAPIResource):
606
706
  project_id: int | None = None,
607
707
  region_id: int | None = None,
608
708
  nodes: List[str],
609
- image_id: Optional[str] | NotGiven = NOT_GIVEN,
610
- user_data: Optional[str] | NotGiven = NOT_GIVEN,
611
- polling_interval_seconds: int | NotGiven = NOT_GIVEN,
709
+ image_id: Optional[str] | Omit = omit,
710
+ user_data: Optional[str] | Omit = omit,
711
+ polling_interval_seconds: int | Omit = omit,
612
712
  # Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
613
713
  # The extra values given here take precedence over values defined on the client or passed to this method.
614
714
  extra_headers: Headers | None = None,
@@ -657,7 +757,7 @@ class GPUBaremetalClustersResource(SyncAPIResource):
657
757
  project_id: int | None = None,
658
758
  region_id: int | None = None,
659
759
  instances_count: int,
660
- polling_interval_seconds: int | NotGiven = NOT_GIVEN,
760
+ polling_interval_seconds: int | Omit = omit,
661
761
  # Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
662
762
  # The extra values given here take precedence over values defined on the client or passed to this method.
663
763
  extra_headers: Headers | None = None,
@@ -744,13 +844,13 @@ class AsyncGPUBaremetalClustersResource(AsyncAPIResource):
744
844
  name: str,
745
845
  servers_count: int,
746
846
  servers_settings: gpu_baremetal_cluster_create_params.ServersSettings,
747
- tags: Dict[str, str] | NotGiven = NOT_GIVEN,
847
+ tags: Dict[str, str] | Omit = omit,
748
848
  # Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
749
849
  # The extra values given here take precedence over values defined on the client or passed to this method.
750
850
  extra_headers: Headers | None = None,
751
851
  extra_query: Query | None = None,
752
852
  extra_body: Body | None = None,
753
- timeout: float | httpx.Timeout | None | NotGiven = NOT_GIVEN,
853
+ timeout: float | httpx.Timeout | None | NotGiven = not_given,
754
854
  ) -> TaskIDList:
755
855
  """
756
856
  Create a new bare metal GPU cluster with the specified configuration.
@@ -789,7 +889,9 @@ class AsyncGPUBaremetalClustersResource(AsyncAPIResource):
789
889
  if region_id is None:
790
890
  region_id = self._client._get_cloud_region_id_path_param()
791
891
  return await self._post(
792
- f"/cloud/v3/gpu/baremetal/{project_id}/{region_id}/clusters",
892
+ f"/cloud/v3/gpu/baremetal/{project_id}/{region_id}/clusters"
893
+ if self._client._base_url_overridden
894
+ else f"https://api.gcore.com//cloud/v3/gpu/baremetal/{project_id}/{region_id}/clusters",
793
895
  body=await async_maybe_transform(
794
896
  {
795
897
  "flavor": flavor,
@@ -812,15 +914,15 @@ class AsyncGPUBaremetalClustersResource(AsyncAPIResource):
812
914
  *,
813
915
  project_id: int | None = None,
814
916
  region_id: int | None = None,
815
- limit: int | NotGiven = NOT_GIVEN,
816
- managed_by: List[Literal["k8s", "user"]] | NotGiven = NOT_GIVEN,
817
- offset: int | NotGiven = NOT_GIVEN,
917
+ limit: int | Omit = omit,
918
+ managed_by: List[Literal["k8s", "user"]] | Omit = omit,
919
+ offset: int | Omit = omit,
818
920
  # Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
819
921
  # The extra values given here take precedence over values defined on the client or passed to this method.
820
922
  extra_headers: Headers | None = None,
821
923
  extra_query: Query | None = None,
822
924
  extra_body: Body | None = None,
823
- timeout: float | httpx.Timeout | None | NotGiven = NOT_GIVEN,
925
+ timeout: float | httpx.Timeout | None | NotGiven = not_given,
824
926
  ) -> AsyncPaginator[GPUBaremetalCluster, AsyncOffsetPage[GPUBaremetalCluster]]:
825
927
  """
826
928
  List all bare metal GPU clusters in the specified project and region.
@@ -853,7 +955,9 @@ class AsyncGPUBaremetalClustersResource(AsyncAPIResource):
853
955
  if region_id is None:
854
956
  region_id = self._client._get_cloud_region_id_path_param()
855
957
  return self._get_api_list(
856
- f"/cloud/v3/gpu/baremetal/{project_id}/{region_id}/clusters",
958
+ f"/cloud/v3/gpu/baremetal/{project_id}/{region_id}/clusters"
959
+ if self._client._base_url_overridden
960
+ else f"https://api.gcore.com//cloud/v3/gpu/baremetal/{project_id}/{region_id}/clusters",
857
961
  page=AsyncOffsetPage[GPUBaremetalCluster],
858
962
  options=make_request_options(
859
963
  extra_headers=extra_headers,
@@ -878,16 +982,16 @@ class AsyncGPUBaremetalClustersResource(AsyncAPIResource):
878
982
  *,
879
983
  project_id: int | None = None,
880
984
  region_id: int | None = None,
881
- all_floating_ips: bool | NotGiven = NOT_GIVEN,
882
- all_reserved_fixed_ips: bool | NotGiven = NOT_GIVEN,
883
- floating_ip_ids: SequenceNotStr[str] | NotGiven = NOT_GIVEN,
884
- reserved_fixed_ip_ids: SequenceNotStr[str] | NotGiven = NOT_GIVEN,
985
+ all_floating_ips: bool | Omit = omit,
986
+ all_reserved_fixed_ips: bool | Omit = omit,
987
+ floating_ip_ids: SequenceNotStr[str] | Omit = omit,
988
+ reserved_fixed_ip_ids: SequenceNotStr[str] | Omit = omit,
885
989
  # Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
886
990
  # The extra values given here take precedence over values defined on the client or passed to this method.
887
991
  extra_headers: Headers | None = None,
888
992
  extra_query: Query | None = None,
889
993
  extra_body: Body | None = None,
890
- timeout: float | httpx.Timeout | None | NotGiven = NOT_GIVEN,
994
+ timeout: float | httpx.Timeout | None | NotGiven = not_given,
891
995
  ) -> TaskIDList:
892
996
  """
893
997
  Delete a bare metal GPU cluster and all its associated resources.
@@ -924,7 +1028,9 @@ class AsyncGPUBaremetalClustersResource(AsyncAPIResource):
924
1028
  if not cluster_id:
925
1029
  raise ValueError(f"Expected a non-empty value for `cluster_id` but received {cluster_id!r}")
926
1030
  return await self._delete(
927
- f"/cloud/v3/gpu/baremetal/{project_id}/{region_id}/clusters/{cluster_id}",
1031
+ f"/cloud/v3/gpu/baremetal/{project_id}/{region_id}/clusters/{cluster_id}"
1032
+ if self._client._base_url_overridden
1033
+ else f"https://api.gcore.com//cloud/v3/gpu/baremetal/{project_id}/{region_id}/clusters/{cluster_id}",
928
1034
  options=make_request_options(
929
1035
  extra_headers=extra_headers,
930
1036
  extra_query=extra_query,
@@ -943,6 +1049,88 @@ class AsyncGPUBaremetalClustersResource(AsyncAPIResource):
943
1049
  cast_to=TaskIDList,
944
1050
  )
945
1051
 
1052
+ async def action(
1053
+ self,
1054
+ cluster_id: str,
1055
+ *,
1056
+ project_id: int | None = None,
1057
+ region_id: int | None = None,
1058
+ action: Literal["update_tags"],
1059
+ tags: Optional[TagUpdateMapParam],
1060
+ # Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
1061
+ # The extra values given here take precedence over values defined on the client or passed to this method.
1062
+ extra_headers: Headers | None = None,
1063
+ extra_query: Query | None = None,
1064
+ extra_body: Body | None = None,
1065
+ timeout: float | httpx.Timeout | None | NotGiven = not_given,
1066
+ ) -> TaskIDList:
1067
+ """Perform a specific action on a baremetal GPU cluster.
1068
+
1069
+ Available actions: update
1070
+ tags.
1071
+
1072
+ Args:
1073
+ project_id: Project ID
1074
+
1075
+ region_id: Region ID
1076
+
1077
+ cluster_id: Cluster unique identifier
1078
+
1079
+ action: Action name
1080
+
1081
+ tags: Update key-value tags using JSON Merge Patch semantics (RFC 7386). Provide
1082
+ key-value pairs to add or update tags. Set tag values to `null` to remove tags.
1083
+ Unspecified tags remain unchanged. Read-only tags are always preserved and
1084
+ cannot be modified.
1085
+
1086
+ **Examples:**
1087
+
1088
+ - **Add/update tags:**
1089
+ `{'tags': {'environment': 'production', 'team': 'backend'}}` adds new tags or
1090
+ updates existing ones.
1091
+ - **Delete tags:** `{'tags': {'`old_tag`': null}}` removes specific tags.
1092
+ - **Remove all tags:** `{'tags': null}` removes all user-managed tags (read-only
1093
+ tags are preserved).
1094
+ - **Partial update:** `{'tags': {'environment': 'staging'}}` only updates
1095
+ specified tags.
1096
+ - **Mixed operations:**
1097
+ `{'tags': {'environment': 'production', '`cost_center`': 'engineering', '`deprecated_tag`': null}}`
1098
+ adds/updates 'environment' and '`cost_center`' while removing
1099
+ '`deprecated_tag`', preserving other existing tags.
1100
+ - **Replace all:** first delete existing tags with null values, then add new
1101
+ ones in the same request.
1102
+
1103
+ extra_headers: Send extra headers
1104
+
1105
+ extra_query: Add additional query parameters to the request
1106
+
1107
+ extra_body: Add additional JSON properties to the request
1108
+
1109
+ timeout: Override the client-level default timeout for this request, in seconds
1110
+ """
1111
+ if project_id is None:
1112
+ project_id = self._client._get_cloud_project_id_path_param()
1113
+ if region_id is None:
1114
+ region_id = self._client._get_cloud_region_id_path_param()
1115
+ if not cluster_id:
1116
+ raise ValueError(f"Expected a non-empty value for `cluster_id` but received {cluster_id!r}")
1117
+ return await self._post(
1118
+ f"/cloud/v3/gpu/baremetal/{project_id}/{region_id}/clusters/{cluster_id}/action"
1119
+ if self._client._base_url_overridden
1120
+ else f"https://api.gcore.com//cloud/v3/gpu/baremetal/{project_id}/{region_id}/clusters/{cluster_id}/action",
1121
+ body=await async_maybe_transform(
1122
+ {
1123
+ "action": action,
1124
+ "tags": tags,
1125
+ },
1126
+ gpu_baremetal_cluster_action_params.GPUBaremetalClusterActionParams,
1127
+ ),
1128
+ options=make_request_options(
1129
+ extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout
1130
+ ),
1131
+ cast_to=TaskIDList,
1132
+ )
1133
+
946
1134
  async def get(
947
1135
  self,
948
1136
  cluster_id: str,
@@ -954,7 +1142,7 @@ class AsyncGPUBaremetalClustersResource(AsyncAPIResource):
954
1142
  extra_headers: Headers | None = None,
955
1143
  extra_query: Query | None = None,
956
1144
  extra_body: Body | None = None,
957
- timeout: float | httpx.Timeout | None | NotGiven = NOT_GIVEN,
1145
+ timeout: float | httpx.Timeout | None | NotGiven = not_given,
958
1146
  ) -> GPUBaremetalCluster:
959
1147
  """
960
1148
  Get detailed information about a specific bare metal GPU cluster.
@@ -981,7 +1169,9 @@ class AsyncGPUBaremetalClustersResource(AsyncAPIResource):
981
1169
  if not cluster_id:
982
1170
  raise ValueError(f"Expected a non-empty value for `cluster_id` but received {cluster_id!r}")
983
1171
  return await self._get(
984
- f"/cloud/v3/gpu/baremetal/{project_id}/{region_id}/clusters/{cluster_id}",
1172
+ f"/cloud/v3/gpu/baremetal/{project_id}/{region_id}/clusters/{cluster_id}"
1173
+ if self._client._base_url_overridden
1174
+ else f"https://api.gcore.com//cloud/v3/gpu/baremetal/{project_id}/{region_id}/clusters/{cluster_id}",
985
1175
  options=make_request_options(
986
1176
  extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout
987
1177
  ),
@@ -999,7 +1189,7 @@ class AsyncGPUBaremetalClustersResource(AsyncAPIResource):
999
1189
  extra_headers: Headers | None = None,
1000
1190
  extra_query: Query | None = None,
1001
1191
  extra_body: Body | None = None,
1002
- timeout: float | httpx.Timeout | None | NotGiven = NOT_GIVEN,
1192
+ timeout: float | httpx.Timeout | None | NotGiven = not_given,
1003
1193
  ) -> GPUBaremetalClusterServerV1List:
1004
1194
  """
1005
1195
  Stops and then starts all cluster servers, effectively performing a hard reboot.
@@ -1020,7 +1210,9 @@ class AsyncGPUBaremetalClustersResource(AsyncAPIResource):
1020
1210
  if not cluster_id:
1021
1211
  raise ValueError(f"Expected a non-empty value for `cluster_id` but received {cluster_id!r}")
1022
1212
  return await self._post(
1023
- f"/cloud/v2/ai/clusters/{project_id}/{region_id}/{cluster_id}/powercycle",
1213
+ f"/cloud/v2/ai/clusters/{project_id}/{region_id}/{cluster_id}/powercycle"
1214
+ if self._client._base_url_overridden
1215
+ else f"https://api.gcore.com//cloud/v2/ai/clusters/{project_id}/{region_id}/{cluster_id}/powercycle",
1024
1216
  options=make_request_options(
1025
1217
  extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout
1026
1218
  ),
@@ -1038,7 +1230,7 @@ class AsyncGPUBaremetalClustersResource(AsyncAPIResource):
1038
1230
  extra_headers: Headers | None = None,
1039
1231
  extra_query: Query | None = None,
1040
1232
  extra_body: Body | None = None,
1041
- timeout: float | httpx.Timeout | None | NotGiven = NOT_GIVEN,
1233
+ timeout: float | httpx.Timeout | None | NotGiven = not_given,
1042
1234
  ) -> GPUBaremetalClusterServerV1List:
1043
1235
  """
1044
1236
  Reboot all bare metal GPU cluster servers
@@ -1059,7 +1251,9 @@ class AsyncGPUBaremetalClustersResource(AsyncAPIResource):
1059
1251
  if not cluster_id:
1060
1252
  raise ValueError(f"Expected a non-empty value for `cluster_id` but received {cluster_id!r}")
1061
1253
  return await self._post(
1062
- f"/cloud/v2/ai/clusters/{project_id}/{region_id}/{cluster_id}/reboot",
1254
+ f"/cloud/v2/ai/clusters/{project_id}/{region_id}/{cluster_id}/reboot"
1255
+ if self._client._base_url_overridden
1256
+ else f"https://api.gcore.com//cloud/v2/ai/clusters/{project_id}/{region_id}/{cluster_id}/reboot",
1063
1257
  options=make_request_options(
1064
1258
  extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout
1065
1259
  ),
@@ -1073,14 +1267,14 @@ class AsyncGPUBaremetalClustersResource(AsyncAPIResource):
1073
1267
  project_id: int | None = None,
1074
1268
  region_id: int | None = None,
1075
1269
  nodes: SequenceNotStr[str],
1076
- image_id: Optional[str] | NotGiven = NOT_GIVEN,
1077
- user_data: Optional[str] | NotGiven = NOT_GIVEN,
1270
+ image_id: Optional[str] | Omit = omit,
1271
+ user_data: Optional[str] | Omit = omit,
1078
1272
  # Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
1079
1273
  # The extra values given here take precedence over values defined on the client or passed to this method.
1080
1274
  extra_headers: Headers | None = None,
1081
1275
  extra_query: Query | None = None,
1082
1276
  extra_body: Body | None = None,
1083
- timeout: float | httpx.Timeout | None | NotGiven = NOT_GIVEN,
1277
+ timeout: float | httpx.Timeout | None | NotGiven = not_given,
1084
1278
  ) -> TaskIDList:
1085
1279
  """Rebuild one or more nodes in a GPU cluster.
1086
1280
 
@@ -1111,7 +1305,9 @@ class AsyncGPUBaremetalClustersResource(AsyncAPIResource):
1111
1305
  if not cluster_id:
1112
1306
  raise ValueError(f"Expected a non-empty value for `cluster_id` but received {cluster_id!r}")
1113
1307
  return await self._post(
1114
- f"/cloud/v1/ai/clusters/gpu/{project_id}/{region_id}/{cluster_id}/rebuild",
1308
+ f"/cloud/v1/ai/clusters/gpu/{project_id}/{region_id}/{cluster_id}/rebuild"
1309
+ if self._client._base_url_overridden
1310
+ else f"https://api.gcore.com//cloud/v1/ai/clusters/gpu/{project_id}/{region_id}/{cluster_id}/rebuild",
1115
1311
  body=await async_maybe_transform(
1116
1312
  {
1117
1313
  "nodes": nodes,
@@ -1138,7 +1334,7 @@ class AsyncGPUBaremetalClustersResource(AsyncAPIResource):
1138
1334
  extra_headers: Headers | None = None,
1139
1335
  extra_query: Query | None = None,
1140
1336
  extra_body: Body | None = None,
1141
- timeout: float | httpx.Timeout | None | NotGiven = NOT_GIVEN,
1337
+ timeout: float | httpx.Timeout | None | NotGiven = not_given,
1142
1338
  ) -> TaskIDList:
1143
1339
  """Change the number of nodes in a GPU cluster.
1144
1340
 
@@ -1163,7 +1359,9 @@ class AsyncGPUBaremetalClustersResource(AsyncAPIResource):
1163
1359
  if not cluster_id:
1164
1360
  raise ValueError(f"Expected a non-empty value for `cluster_id` but received {cluster_id!r}")
1165
1361
  return await self._post(
1166
- f"/cloud/v1/ai/clusters/gpu/{project_id}/{region_id}/{cluster_id}/resize",
1362
+ f"/cloud/v1/ai/clusters/gpu/{project_id}/{region_id}/{cluster_id}/resize"
1363
+ if self._client._base_url_overridden
1364
+ else f"https://api.gcore.com//cloud/v1/ai/clusters/gpu/{project_id}/{region_id}/{cluster_id}/resize",
1167
1365
  body=await async_maybe_transform(
1168
1366
  {"instances_count": instances_count},
1169
1367
  gpu_baremetal_cluster_resize_params.GPUBaremetalClusterResizeParams,
@@ -1184,8 +1382,8 @@ class AsyncGPUBaremetalClustersResource(AsyncAPIResource):
1184
1382
  name: str,
1185
1383
  servers_count: int,
1186
1384
  servers_settings: gpu_baremetal_cluster_create_params.ServersSettings,
1187
- tags: Dict[str, str] | NotGiven = NOT_GIVEN,
1188
- polling_interval_seconds: int | NotGiven = NOT_GIVEN,
1385
+ tags: Dict[str, str] | Omit = omit,
1386
+ polling_interval_seconds: int | Omit = omit,
1189
1387
  # Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
1190
1388
  # The extra values given here take precedence over values defined on the client or passed to this method.
1191
1389
  extra_headers: Headers | None = None,
@@ -1239,9 +1437,9 @@ class AsyncGPUBaremetalClustersResource(AsyncAPIResource):
1239
1437
  project_id: int | None = None,
1240
1438
  region_id: int | None = None,
1241
1439
  nodes: List[str],
1242
- image_id: Optional[str] | NotGiven = NOT_GIVEN,
1243
- user_data: Optional[str] | NotGiven = NOT_GIVEN,
1244
- polling_interval_seconds: int | NotGiven = NOT_GIVEN,
1440
+ image_id: Optional[str] | Omit = omit,
1441
+ user_data: Optional[str] | Omit = omit,
1442
+ polling_interval_seconds: int | Omit = omit,
1245
1443
  # Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
1246
1444
  # The extra values given here take precedence over values defined on the client or passed to this method.
1247
1445
  extra_headers: Headers | None = None,
@@ -1290,7 +1488,7 @@ class AsyncGPUBaremetalClustersResource(AsyncAPIResource):
1290
1488
  project_id: int | None = None,
1291
1489
  region_id: int | None = None,
1292
1490
  instances_count: int,
1293
- polling_interval_seconds: int | NotGiven = NOT_GIVEN,
1491
+ polling_interval_seconds: int | Omit = omit,
1294
1492
  # Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
1295
1493
  # The extra values given here take precedence over values defined on the client or passed to this method.
1296
1494
  extra_headers: Headers | None = None,
@@ -1344,6 +1542,9 @@ class GPUBaremetalClustersResourceWithRawResponse:
1344
1542
  self.delete = to_raw_response_wrapper(
1345
1543
  gpu_baremetal_clusters.delete,
1346
1544
  )
1545
+ self.action = to_raw_response_wrapper(
1546
+ gpu_baremetal_clusters.action,
1547
+ )
1347
1548
  self.get = to_raw_response_wrapper(
1348
1549
  gpu_baremetal_clusters.get,
1349
1550
  )
@@ -1390,6 +1591,9 @@ class AsyncGPUBaremetalClustersResourceWithRawResponse:
1390
1591
  self.delete = async_to_raw_response_wrapper(
1391
1592
  gpu_baremetal_clusters.delete,
1392
1593
  )
1594
+ self.action = async_to_raw_response_wrapper(
1595
+ gpu_baremetal_clusters.action,
1596
+ )
1393
1597
  self.get = async_to_raw_response_wrapper(
1394
1598
  gpu_baremetal_clusters.get,
1395
1599
  )
@@ -1436,6 +1640,9 @@ class GPUBaremetalClustersResourceWithStreamingResponse:
1436
1640
  self.delete = to_streamed_response_wrapper(
1437
1641
  gpu_baremetal_clusters.delete,
1438
1642
  )
1643
+ self.action = to_streamed_response_wrapper(
1644
+ gpu_baremetal_clusters.action,
1645
+ )
1439
1646
  self.get = to_streamed_response_wrapper(
1440
1647
  gpu_baremetal_clusters.get,
1441
1648
  )
@@ -1482,6 +1689,9 @@ class AsyncGPUBaremetalClustersResourceWithStreamingResponse:
1482
1689
  self.delete = async_to_streamed_response_wrapper(
1483
1690
  gpu_baremetal_clusters.delete,
1484
1691
  )
1692
+ self.action = async_to_streamed_response_wrapper(
1693
+ gpu_baremetal_clusters.action,
1694
+ )
1485
1695
  self.get = async_to_streamed_response_wrapper(
1486
1696
  gpu_baremetal_clusters.get,
1487
1697
  )