gcore 0.9.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 (420) 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 +26 -10
  51. gcore/resources/cloud/load_balancers/pools/members.py +34 -4
  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/security/bgp_announces.py +15 -15
  72. gcore/resources/storage/__init__.py +75 -0
  73. gcore/resources/storage/buckets/__init__.py +61 -0
  74. gcore/resources/storage/buckets/buckets.py +470 -0
  75. gcore/resources/storage/buckets/cors.py +265 -0
  76. gcore/resources/storage/buckets/lifecycle.py +276 -0
  77. gcore/resources/storage/buckets/policy.py +345 -0
  78. gcore/resources/storage/credentials.py +221 -0
  79. gcore/resources/storage/locations.py +190 -0
  80. gcore/resources/storage/statistics.py +364 -0
  81. gcore/resources/storage/storage.py +1042 -0
  82. gcore/resources/streaming/ai_tasks.py +56 -70
  83. gcore/resources/streaming/playlists.py +18 -18
  84. gcore/resources/streaming/quality_sets.py +8 -8
  85. gcore/resources/streaming/statistics.py +4 -122
  86. gcore/resources/streaming/streams/overlays.py +6 -6
  87. gcore/resources/streaming/streams/streams.py +40 -64
  88. gcore/resources/streaming/videos/subtitles.py +32 -30
  89. gcore/resources/streaming/videos/videos.py +78 -72
  90. gcore/resources/waap/__init__.py +14 -0
  91. gcore/resources/waap/custom_page_sets.py +40 -34
  92. gcore/resources/waap/domains/__init__.py +14 -28
  93. gcore/resources/waap/domains/advanced_rules.py +7 -10
  94. gcore/resources/waap/domains/{api_discovery/api_discovery.py → api_discovery.py} +292 -59
  95. gcore/resources/waap/domains/api_path_groups.py +5 -5
  96. gcore/resources/waap/domains/api_paths.py +28 -30
  97. gcore/resources/waap/domains/custom_rules.py +7 -10
  98. gcore/resources/waap/domains/domains.py +124 -68
  99. gcore/resources/waap/domains/firewall_rules.py +5 -7
  100. gcore/resources/waap/domains/insight_silences.py +34 -11
  101. gcore/resources/waap/domains/insights.py +43 -17
  102. gcore/resources/waap/domains/statistics.py +977 -0
  103. gcore/resources/waap/insights.py +233 -0
  104. gcore/resources/waap/ip_info/__init__.py +33 -0
  105. gcore/resources/waap/{ip_info.py → ip_info/ip_info.py} +149 -235
  106. gcore/resources/waap/ip_info/metrics.py +203 -0
  107. gcore/resources/waap/waap.py +40 -8
  108. gcore/types/cloud/__init__.py +2 -4
  109. gcore/types/cloud/audit_log_list_params.py +2 -1
  110. gcore/types/cloud/baremetal/image_list_params.py +3 -2
  111. gcore/types/cloud/baremetal/server_create_params.py +8 -6
  112. gcore/types/cloud/baremetal/server_list_params.py +3 -2
  113. gcore/types/cloud/baremetal/server_rebuild_params.py +2 -0
  114. gcore/types/cloud/cost_report_get_aggregated_monthly_params.py +35 -31
  115. gcore/types/cloud/cost_report_get_aggregated_params.py +26 -25
  116. gcore/types/cloud/cost_report_get_detailed_params.py +26 -25
  117. gcore/types/cloud/ddos_profile.py +13 -7
  118. gcore/types/cloud/ddos_profile_field.py +21 -8
  119. gcore/types/cloud/ddos_profile_option_list.py +7 -6
  120. gcore/types/cloud/ddos_profile_status.py +2 -2
  121. gcore/types/cloud/ddos_profile_template.py +7 -3
  122. gcore/types/cloud/ddos_profile_template_field.py +12 -3
  123. gcore/types/cloud/file_share.py +2 -2
  124. gcore/types/cloud/file_share_create_params.py +12 -6
  125. gcore/types/cloud/floating_ip_list_params.py +3 -2
  126. gcore/types/cloud/gpu_baremetal_cluster.py +101 -74
  127. gcore/types/cloud/gpu_baremetal_cluster_create_params.py +76 -93
  128. gcore/types/cloud/gpu_baremetal_cluster_delete_params.py +17 -10
  129. gcore/types/cloud/gpu_baremetal_cluster_list_params.py +14 -3
  130. gcore/types/cloud/gpu_baremetal_cluster_rebuild_params.py +4 -2
  131. gcore/types/cloud/gpu_baremetal_clusters/__init__.py +6 -0
  132. gcore/types/cloud/gpu_baremetal_clusters/gpu_baremetal_cluster_server.py +74 -0
  133. gcore/types/cloud/{gpu_baremetal_cluster_server.py → gpu_baremetal_clusters/gpu_baremetal_cluster_server_v1.py} +10 -10
  134. gcore/types/cloud/gpu_baremetal_clusters/gpu_baremetal_cluster_server_v1_list.py +16 -0
  135. gcore/types/cloud/{gpu_baremetal_flavor.py → gpu_baremetal_clusters/gpu_baremetal_flavor.py} +1 -1
  136. gcore/types/cloud/{gpu_baremetal_flavor_list.py → gpu_baremetal_clusters/gpu_baremetal_flavor_list.py} +1 -1
  137. gcore/types/cloud/gpu_baremetal_clusters/server_list_params.py +75 -0
  138. gcore/types/cloud/health_monitor.py +6 -0
  139. gcore/types/cloud/inference/__init__.py +0 -5
  140. gcore/types/cloud/inference/applications/__init__.py +12 -0
  141. gcore/types/cloud/inference/applications/deployment_create_params.py +68 -0
  142. gcore/types/cloud/inference/applications/deployment_patch_params.py +62 -0
  143. gcore/types/cloud/inference/applications/inference_application_deployment.py +111 -0
  144. gcore/types/cloud/inference/applications/inference_application_deployment_list.py +16 -0
  145. gcore/types/cloud/inference/applications/inference_application_template.py +94 -0
  146. gcore/types/cloud/inference/applications/inference_application_template_list.py +16 -0
  147. gcore/types/cloud/inference/deployment_create_params.py +7 -6
  148. gcore/types/cloud/inference/deployment_update_params.py +7 -6
  149. gcore/types/cloud/instance_assign_security_group_params.py +4 -2
  150. gcore/types/cloud/instance_list_params.py +3 -2
  151. gcore/types/cloud/instance_unassign_security_group_params.py +4 -2
  152. gcore/types/cloud/instances/image_list_params.py +3 -2
  153. gcore/types/cloud/k8s/__init__.py +13 -0
  154. gcore/types/cloud/k8s/cluster_create_params.py +299 -0
  155. gcore/types/cloud/k8s/cluster_delete_params.py +16 -0
  156. gcore/types/cloud/k8s/cluster_update_params.py +203 -0
  157. gcore/types/cloud/k8s/cluster_upgrade_params.py +16 -0
  158. gcore/types/cloud/k8s/clusters/__init__.py +10 -0
  159. gcore/types/cloud/k8s/clusters/k8s_cluster_pool.py +66 -0
  160. gcore/types/cloud/k8s/clusters/k8s_cluster_pool_list.py +16 -0
  161. gcore/types/cloud/k8s/clusters/node_list_params.py +16 -0
  162. gcore/types/cloud/k8s/clusters/pool_create_params.py +53 -0
  163. gcore/types/cloud/k8s/clusters/pool_resize_params.py +18 -0
  164. gcore/types/cloud/k8s/clusters/pool_update_params.py +34 -0
  165. gcore/types/{waap/domains/analytics → cloud/k8s/clusters/pools}/__init__.py +1 -1
  166. gcore/types/cloud/k8s/clusters/pools/node_list_params.py +18 -0
  167. gcore/types/cloud/k8s/flavor_list_params.py +19 -0
  168. gcore/types/cloud/k8s/k8s_cluster.py +209 -0
  169. gcore/types/cloud/k8s/k8s_cluster_certificate.py +13 -0
  170. gcore/types/cloud/k8s/k8s_cluster_kubeconfig.py +19 -0
  171. gcore/types/cloud/k8s/k8s_cluster_list.py +16 -0
  172. gcore/types/cloud/k8s_cluster_version.py +10 -0
  173. gcore/types/cloud/{gpu_baremetal_cluster_server_list.py → k8s_cluster_version_list.py} +4 -4
  174. gcore/types/cloud/load_balancer_create_params.py +31 -7
  175. gcore/types/cloud/load_balancer_list_params.py +3 -2
  176. gcore/types/cloud/load_balancers/l7_policies/rule_create_params.py +3 -2
  177. gcore/types/cloud/load_balancers/l7_policies/rule_replace_params.py +3 -2
  178. gcore/types/cloud/load_balancers/l7_policy_create_params.py +3 -2
  179. gcore/types/cloud/load_balancers/l7_policy_replace_params.py +3 -2
  180. gcore/types/cloud/load_balancers/listener_create_params.py +4 -3
  181. gcore/types/cloud/load_balancers/listener_update_params.py +5 -3
  182. gcore/types/cloud/load_balancers/pool_create_params.py +27 -4
  183. gcore/types/cloud/load_balancers/pool_update_params.py +27 -4
  184. gcore/types/cloud/load_balancers/pools/health_monitor_create_params.py +7 -2
  185. gcore/types/cloud/load_balancers/pools/member_add_params.py +20 -2
  186. gcore/types/cloud/member.py +19 -1
  187. gcore/types/cloud/network_list_params.py +3 -2
  188. gcore/types/cloud/networks/subnet_create_params.py +3 -2
  189. gcore/types/cloud/networks/subnet_list_params.py +3 -2
  190. gcore/types/cloud/networks/subnet_update_params.py +3 -2
  191. gcore/types/cloud/project.py +9 -9
  192. gcore/types/cloud/region.py +0 -3
  193. gcore/types/cloud/reserved_fixed_ips/vip_replace_connected_ports_params.py +3 -2
  194. gcore/types/cloud/reserved_fixed_ips/vip_update_connected_ports_params.py +3 -2
  195. gcore/types/cloud/security_group_create_params.py +4 -2
  196. gcore/types/cloud/security_group_list_params.py +3 -2
  197. gcore/types/cloud/task_id_list.py +8 -1
  198. gcore/types/cloud/task_list_params.py +23 -23
  199. gcore/types/cloud/usage_report_get_params.py +26 -25
  200. gcore/types/cloud/users/role_assignment.py +2 -1
  201. gcore/types/cloud/users/role_assignment_create_params.py +4 -2
  202. gcore/types/cloud/users/role_assignment_update_params.py +4 -2
  203. gcore/types/cloud/volume_list_params.py +3 -2
  204. gcore/types/dns/__init__.py +31 -0
  205. gcore/types/dns/dns_get_account_overview_response.py +21 -0
  206. gcore/types/dns/dns_label_name.py +13 -0
  207. gcore/types/dns/dns_location_translations.py +11 -0
  208. gcore/types/dns/dns_lookup_params.py +15 -0
  209. gcore/types/dns/dns_lookup_response.py +21 -0
  210. gcore/types/dns/dns_name_server.py +17 -0
  211. gcore/types/dns/location_list_continents_response.py +10 -0
  212. gcore/types/dns/location_list_countries_response.py +10 -0
  213. gcore/types/dns/location_list_regions_response.py +10 -0
  214. gcore/types/dns/location_list_response.py +16 -0
  215. gcore/types/dns/metric_list_params.py +24 -0
  216. gcore/types/dns/metric_list_response.py +7 -0
  217. gcore/types/dns/picker_list_response.py +10 -0
  218. gcore/types/dns/pickers/__init__.py +5 -0
  219. gcore/types/dns/pickers/preset_list_response.py +10 -0
  220. gcore/types/dns/zone_check_delegation_status_response.py +20 -0
  221. gcore/types/dns/zone_create_params.py +59 -0
  222. gcore/types/dns/zone_create_response.py +13 -0
  223. gcore/types/dns/zone_export_response.py +11 -0
  224. gcore/types/dns/zone_get_response.py +106 -0
  225. gcore/types/dns/zone_get_statistics_params.py +43 -0
  226. gcore/types/dns/zone_get_statistics_response.py +19 -0
  227. gcore/types/dns/zone_import_params.py +32 -0
  228. gcore/types/dns/zone_import_response.py +26 -0
  229. gcore/types/dns/zone_list_params.py +57 -0
  230. gcore/types/dns/zone_list_response.py +105 -0
  231. gcore/types/dns/zone_replace_params.py +61 -0
  232. gcore/types/dns/zones/__init__.py +15 -0
  233. gcore/types/dns/zones/dns_failover_log.py +19 -0
  234. gcore/types/dns/zones/dns_output_rrset.py +123 -0
  235. gcore/types/dns/zones/dnssec_get_response.py +38 -0
  236. gcore/types/dns/zones/dnssec_update_params.py +11 -0
  237. gcore/types/dns/zones/dnssec_update_response.py +38 -0
  238. gcore/types/dns/zones/rrset_create_params.py +82 -0
  239. gcore/types/dns/zones/rrset_get_failover_logs_params.py +21 -0
  240. gcore/types/dns/zones/rrset_get_failover_logs_response.py +15 -0
  241. gcore/types/dns/zones/rrset_list_params.py +21 -0
  242. gcore/types/dns/zones/rrset_list_response.py +14 -0
  243. gcore/types/dns/zones/rrset_replace_params.py +82 -0
  244. gcore/types/security/__init__.py +1 -1
  245. gcore/types/security/{bgp_announce_change_params.py → bgp_announce_toggle_params.py} +2 -2
  246. gcore/types/security/client_profile.py +1 -1
  247. gcore/types/security/profile_create_params.py +2 -2
  248. gcore/types/security/profile_recreate_params.py +2 -2
  249. gcore/types/security/profile_replace_params.py +2 -2
  250. gcore/types/storage/__init__.py +21 -0
  251. gcore/types/storage/bucket.py +15 -0
  252. gcore/types/storage/bucket_list_params.py +15 -0
  253. gcore/types/storage/buckets/__init__.py +9 -0
  254. gcore/types/storage/buckets/bucket_cors.py +18 -0
  255. gcore/types/storage/buckets/bucket_policy.py +7 -0
  256. gcore/types/storage/buckets/cor_create_params.py +17 -0
  257. gcore/types/storage/buckets/lifecycle_create_params.py +18 -0
  258. gcore/types/storage/buckets/policy_get_response.py +7 -0
  259. gcore/types/storage/credential_recreate_params.py +36 -0
  260. gcore/types/storage/location.py +24 -0
  261. gcore/types/storage/location_list_params.py +13 -0
  262. gcore/types/storage/statistic_get_usage_aggregated_params.py +24 -0
  263. gcore/types/storage/statistic_get_usage_series_params.py +38 -0
  264. gcore/types/storage/statistic_get_usage_series_response.py +12 -0
  265. gcore/types/storage/storage.py +101 -0
  266. gcore/types/storage/storage_create_params.py +44 -0
  267. gcore/types/storage/storage_list_params.py +39 -0
  268. gcore/types/storage/storage_restore_params.py +11 -0
  269. gcore/types/storage/storage_update_params.py +18 -0
  270. gcore/types/storage/usage_series.py +201 -0
  271. gcore/types/storage/usage_total.py +54 -0
  272. gcore/types/streaming/__init__.py +0 -4
  273. gcore/types/streaming/ai_contentmoderation_hardnudity.py +1 -1
  274. gcore/types/streaming/ai_contentmoderation_nsfw.py +1 -1
  275. gcore/types/streaming/ai_contentmoderation_softnudity.py +1 -1
  276. gcore/types/streaming/ai_contentmoderation_sport.py +1 -1
  277. gcore/types/streaming/ai_task.py +1 -5
  278. gcore/types/streaming/ai_task_create_params.py +2 -2
  279. gcore/types/streaming/ai_task_get_response.py +0 -46
  280. gcore/types/streaming/clip.py +2 -1
  281. gcore/types/streaming/create_video_param.py +13 -12
  282. gcore/types/streaming/max_stream_series.py +5 -5
  283. gcore/types/streaming/playlist.py +1 -1
  284. gcore/types/streaming/playlist_create_params.py +1 -1
  285. gcore/types/streaming/playlist_update_params.py +1 -1
  286. gcore/types/streaming/playlist_video.py +13 -12
  287. gcore/types/streaming/storage_series.py +5 -5
  288. gcore/types/streaming/stream.py +86 -49
  289. gcore/types/streaming/stream_create_clip_params.py +2 -1
  290. gcore/types/streaming/stream_create_params.py +9 -23
  291. gcore/types/streaming/stream_series.py +5 -5
  292. gcore/types/streaming/stream_update_params.py +9 -23
  293. gcore/types/streaming/video.py +53 -42
  294. gcore/types/streaming/video_update_params.py +13 -12
  295. gcore/types/streaming/vod_statistics_series.py +5 -5
  296. gcore/types/streaming/vod_total_stream_duration_series.py +3 -3
  297. gcore/types/waap/__init__.py +6 -54
  298. gcore/types/waap/custom_page_set_create_params.py +121 -14
  299. gcore/types/waap/custom_page_set_preview_params.py +11 -4
  300. gcore/types/waap/custom_page_set_update_params.py +122 -15
  301. gcore/types/waap/domain_list_params.py +2 -4
  302. gcore/types/waap/domain_update_params.py +1 -1
  303. gcore/types/waap/domains/__init__.py +28 -18
  304. gcore/types/waap/domains/advanced_rule_create_params.py +7 -4
  305. gcore/types/waap/domains/advanced_rule_list_params.py +1 -3
  306. gcore/types/waap/domains/advanced_rule_update_params.py +6 -3
  307. gcore/types/waap/domains/{api_discovery/scan_result_list_params.py → api_discovery_list_scan_results_params.py} +2 -2
  308. gcore/types/waap/domains/api_path_create_params.py +4 -3
  309. gcore/types/waap/domains/{api_path_group_list_response.py → api_path_group_list.py} +2 -2
  310. gcore/types/waap/domains/api_path_list_params.py +3 -1
  311. gcore/types/waap/domains/api_path_update_params.py +5 -4
  312. gcore/types/waap/domains/custom_rule_create_params.py +13 -14
  313. gcore/types/waap/domains/custom_rule_list_params.py +1 -3
  314. gcore/types/waap/domains/custom_rule_update_params.py +12 -13
  315. gcore/types/waap/domains/firewall_rule_create_params.py +3 -2
  316. gcore/types/waap/domains/firewall_rule_update_params.py +2 -1
  317. gcore/types/waap/domains/insight_list_params.py +19 -7
  318. gcore/types/waap/domains/insight_replace_params.py +3 -5
  319. gcore/types/waap/domains/insight_silence_list_params.py +17 -6
  320. gcore/types/waap/domains/setting_update_params.py +3 -2
  321. gcore/types/waap/domains/{analytics_list_ddos_attacks_params.py → statistic_get_ddos_attacks_params.py} +2 -2
  322. gcore/types/waap/domains/statistic_get_ddos_info_params.py +28 -0
  323. gcore/types/waap/domains/statistic_get_events_aggregated_params.py +33 -0
  324. gcore/types/waap/domains/statistic_get_requests_series_params.py +74 -0
  325. gcore/types/waap/domains/statistic_get_traffic_series_params.py +22 -0
  326. gcore/types/waap/domains/statistic_get_traffic_series_response.py +10 -0
  327. gcore/types/waap/{waap_advanced_rule.py → domains/waap_advanced_rule.py} +4 -3
  328. gcore/types/waap/domains/{api_discovery_get_settings_response.py → waap_api_discovery_settings.py} +2 -2
  329. gcore/types/waap/domains/{api_path_get_response.py → waap_api_path.py} +6 -6
  330. gcore/types/waap/domains/{api_discovery/scan_result_get_response.py → waap_api_scan_result.py} +5 -5
  331. gcore/types/waap/{waap_blocked_statistics.py → domains/waap_blocked_statistics.py} +1 -1
  332. gcore/types/waap/{waap_count_statistics.py → domains/waap_count_statistics.py} +1 -1
  333. gcore/types/waap/{waap_custom_rule.py → domains/waap_custom_rule.py} +5 -8
  334. gcore/types/waap/{waap_ddos_attack.py → domains/waap_ddos_attack.py} +1 -1
  335. gcore/types/waap/{waap_ddos_info.py → domains/waap_ddos_info.py} +1 -1
  336. gcore/types/waap/{waap_event_statistics.py → domains/waap_event_statistics.py} +1 -1
  337. gcore/types/waap/{waap_firewall_rule.py → domains/waap_firewall_rule.py} +4 -3
  338. gcore/types/waap/{waap_insight.py → domains/waap_insight.py} +4 -4
  339. gcore/types/waap/{waap_insight_silence.py → domains/waap_insight_silence.py} +1 -1
  340. gcore/types/waap/domains/waap_request_details.py +186 -0
  341. gcore/types/waap/{waap_request_summary.py → domains/waap_request_summary.py} +1 -1
  342. gcore/types/waap/domains/{api_discovery_scan_openapi_response.py → waap_task_id.py} +2 -2
  343. gcore/types/waap/{waap_traffic_metrics.py → domains/waap_traffic_metrics.py} +1 -1
  344. gcore/types/waap/insight_list_types_params.py +28 -0
  345. gcore/types/waap/ip_info/__init__.py +6 -0
  346. gcore/types/waap/{ip_info_get_counts_params.py → ip_info/metric_list_params.py} +2 -2
  347. gcore/types/waap/{waap_ip_info_counts.py → ip_info/waap_ip_info_counts.py} +1 -1
  348. gcore/types/waap/{ip_info_get_params.py → ip_info_get_ip_info_params.py} +2 -2
  349. gcore/types/waap/{waap_ip_info.py → ip_info_get_ip_info_response.py} +2 -2
  350. gcore/types/waap/ip_info_get_top_urls_response.py +12 -3
  351. gcore/types/waap/{ip_info_get_top_sessions_params.py → ip_info_get_top_user_sessions_params.py} +2 -2
  352. gcore/types/waap/{ip_info_get_top_sessions_response.py → ip_info_get_top_user_sessions_response.py} +2 -2
  353. gcore/types/waap/waap_custom_page_set.py +113 -13
  354. gcore/types/waap/waap_detailed_domain.py +2 -2
  355. gcore/types/waap/waap_insight_type.py +33 -0
  356. gcore/types/waap/waap_ip_ddos_info_model.py +3 -3
  357. gcore/types/waap/waap_rule_set.py +26 -3
  358. gcore/types/waap/waap_summary_domain.py +2 -2
  359. {gcore-0.9.0.dist-info → gcore-0.11.0.dist-info}/METADATA +7 -2
  360. {gcore-0.9.0.dist-info → gcore-0.11.0.dist-info}/RECORD +362 -281
  361. gcore/resources/waap/domains/analytics/__init__.py +0 -33
  362. gcore/resources/waap/domains/analytics/analytics.py +0 -676
  363. gcore/resources/waap/domains/analytics/requests.py +0 -378
  364. gcore/resources/waap/domains/api_discovery/__init__.py +0 -33
  365. gcore/resources/waap/domains/api_discovery/scan_results.py +0 -352
  366. gcore/resources/waap/domains/policies.py +0 -173
  367. gcore/types/cloud/inference/inference_model.py +0 -65
  368. gcore/types/cloud/inference/inference_registry_credentials_create.py +0 -22
  369. gcore/types/cloud/inference/model_list_params.py +0 -21
  370. gcore/types/streaming/ai_contentmoderation_casm.py +0 -39
  371. gcore/types/streaming/ai_contentmoderation_weapon.py +0 -39
  372. gcore/types/streaming/meet_series.py +0 -23
  373. gcore/types/streaming/statistic_get_meet_series_params.py +0 -20
  374. gcore/types/waap/domains/analytics/request_list_params.py +0 -53
  375. gcore/types/waap/domains/analytics_get_event_statistics_params.py +0 -34
  376. gcore/types/waap/domains/analytics_list_ddos_info_params.py +0 -31
  377. gcore/types/waap/domains/analytics_list_event_traffic_params.py +0 -26
  378. gcore/types/waap/domains/analytics_list_event_traffic_response.py +0 -10
  379. gcore/types/waap/domains/api_discovery/__init__.py +0 -7
  380. gcore/types/waap/domains/api_discovery/scan_result_list_response.py +0 -29
  381. gcore/types/waap/domains/api_discovery_update_settings_response.py +0 -36
  382. gcore/types/waap/domains/api_discovery_upload_openapi_response.py +0 -10
  383. gcore/types/waap/domains/api_path_create_response.py +0 -50
  384. gcore/types/waap/domains/api_path_list_response.py +0 -50
  385. gcore/types/waap/waap_block_csrf_page_data.py +0 -28
  386. gcore/types/waap/waap_block_csrf_page_data_param.py +0 -28
  387. gcore/types/waap/waap_block_page_data.py +0 -28
  388. gcore/types/waap/waap_block_page_data_param.py +0 -28
  389. gcore/types/waap/waap_captcha_page_data.py +0 -31
  390. gcore/types/waap/waap_captcha_page_data_param.py +0 -31
  391. gcore/types/waap/waap_common_tag.py +0 -16
  392. gcore/types/waap/waap_cookie_disabled_page_data.py +0 -18
  393. gcore/types/waap/waap_cookie_disabled_page_data_param.py +0 -18
  394. gcore/types/waap/waap_customer_rule_state.py +0 -7
  395. gcore/types/waap/waap_domain_policy.py +0 -29
  396. gcore/types/waap/waap_domain_status.py +0 -7
  397. gcore/types/waap/waap_handshake_page_data.py +0 -25
  398. gcore/types/waap/waap_handshake_page_data_param.py +0 -25
  399. gcore/types/waap/waap_insight_silence_sort_by.py +0 -9
  400. gcore/types/waap/waap_insight_sort_by.py +0 -20
  401. gcore/types/waap/waap_insight_status.py +0 -7
  402. gcore/types/waap/waap_javascript_disabled_page_data.py +0 -18
  403. gcore/types/waap/waap_javascript_disabled_page_data_param.py +0 -18
  404. gcore/types/waap/waap_network_details.py +0 -17
  405. gcore/types/waap/waap_page_type.py +0 -9
  406. gcore/types/waap/waap_paginated_custom_page_set.py +0 -22
  407. gcore/types/waap/waap_paginated_ddos_attack.py +0 -22
  408. gcore/types/waap/waap_paginated_ddos_info.py +0 -22
  409. gcore/types/waap/waap_paginated_request_summary.py +0 -22
  410. gcore/types/waap/waap_pattern_matched_tag.py +0 -37
  411. gcore/types/waap/waap_policy_action.py +0 -7
  412. gcore/types/waap/waap_request_details.py +0 -92
  413. gcore/types/waap/waap_request_organization.py +0 -13
  414. gcore/types/waap/waap_resolution.py +0 -7
  415. gcore/types/waap/waap_rule_action_type.py +0 -7
  416. gcore/types/waap/waap_top_url.py +0 -13
  417. gcore/types/waap/waap_traffic_type.py +0 -28
  418. gcore/types/waap/waap_user_agent_details.py +0 -40
  419. {gcore-0.9.0.dist-info → gcore-0.11.0.dist-info}/WHEEL +0 -0
  420. {gcore-0.9.0.dist-info → gcore-0.11.0.dist-info}/licenses/LICENSE +0 -0
@@ -2,7 +2,7 @@
2
2
 
3
3
  from __future__ import annotations
4
4
 
5
- from typing import Dict, List, Optional
5
+ from typing import Dict, Optional
6
6
  from typing_extensions import Literal
7
7
 
8
8
  import httpx
@@ -23,7 +23,7 @@ from .subnets import (
23
23
  SubnetsResourceWithStreamingResponse,
24
24
  AsyncSubnetsResourceWithStreamingResponse,
25
25
  )
26
- from ...._types import NOT_GIVEN, Body, Query, Headers, NotGiven
26
+ from ...._types import NOT_GIVEN, Body, Query, Headers, NotGiven, SequenceNotStr
27
27
  from ...._utils import maybe_transform, async_maybe_transform
28
28
  from ...._compat import cached_property
29
29
  from ...._resource import SyncAPIResource, AsyncAPIResource
@@ -136,6 +136,56 @@ class NetworksResource(SyncAPIResource):
136
136
  cast_to=TaskIDList,
137
137
  )
138
138
 
139
+ def create_and_poll(
140
+ self,
141
+ *,
142
+ project_id: int | None = None,
143
+ region_id: int | None = None,
144
+ name: str,
145
+ create_router: bool | NotGiven = NOT_GIVEN,
146
+ tags: Dict[str, str] | NotGiven = NOT_GIVEN,
147
+ type: Literal["vlan", "vxlan"] | NotGiven = NOT_GIVEN,
148
+ polling_interval_seconds: int | NotGiven = NOT_GIVEN,
149
+ # Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
150
+ # The extra values given here take precedence over values defined on the client or passed to this method.
151
+ extra_headers: Headers | None = None,
152
+ extra_query: Query | None = None,
153
+ extra_body: Body | None = None,
154
+ timeout: float | httpx.Timeout | None | NotGiven = NOT_GIVEN,
155
+ ) -> Network:
156
+ """Create network and poll for the result."""
157
+ response = self.create(
158
+ project_id=project_id,
159
+ region_id=region_id,
160
+ name=name,
161
+ create_router=create_router,
162
+ tags=tags,
163
+ type=type,
164
+ extra_headers=extra_headers,
165
+ extra_query=extra_query,
166
+ extra_body=extra_body,
167
+ timeout=timeout,
168
+ )
169
+ if not response.tasks or len(response.tasks) != 1:
170
+ raise ValueError(f"Expected exactly one task to be created")
171
+ task = self._client.cloud.tasks.poll(
172
+ task_id=response.tasks[0],
173
+ extra_headers=extra_headers,
174
+ polling_interval_seconds=polling_interval_seconds,
175
+ )
176
+ if (
177
+ not task.created_resources
178
+ or not task.created_resources.networks
179
+ or len(task.created_resources.networks) != 1
180
+ ):
181
+ raise ValueError(f"Expected exactly one resource to be created in a task")
182
+ return self.get(
183
+ network_id=task.created_resources.networks[0],
184
+ project_id=project_id,
185
+ region_id=region_id,
186
+ extra_headers=extra_headers,
187
+ )
188
+
139
189
  def update(
140
190
  self,
141
191
  network_id: str,
@@ -224,7 +274,7 @@ class NetworksResource(SyncAPIResource):
224
274
  name: str | NotGiven = NOT_GIVEN,
225
275
  offset: int | NotGiven = NOT_GIVEN,
226
276
  order_by: Literal["created_at.asc", "created_at.desc", "name.asc", "name.desc"] | NotGiven = NOT_GIVEN,
227
- tag_key: List[str] | NotGiven = NOT_GIVEN,
277
+ tag_key: SequenceNotStr[str] | NotGiven = NOT_GIVEN,
228
278
  tag_key_value: str | NotGiven = NOT_GIVEN,
229
279
  # Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
230
280
  # The extra values given here take precedence over values defined on the client or passed to this method.
@@ -335,6 +385,38 @@ class NetworksResource(SyncAPIResource):
335
385
  cast_to=TaskIDList,
336
386
  )
337
387
 
388
+ def delete_and_poll(
389
+ self,
390
+ network_id: str,
391
+ *,
392
+ project_id: int | None = None,
393
+ region_id: int | None = None,
394
+ polling_interval_seconds: int | NotGiven = NOT_GIVEN,
395
+ # Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
396
+ # The extra values given here take precedence over values defined on the client or passed to this method.
397
+ extra_headers: Headers | None = None,
398
+ extra_query: Query | None = None,
399
+ extra_body: Body | None = None,
400
+ timeout: float | httpx.Timeout | None | NotGiven = NOT_GIVEN,
401
+ ) -> None:
402
+ """Delete network and poll for the result."""
403
+ response = self.delete(
404
+ network_id=network_id,
405
+ project_id=project_id,
406
+ region_id=region_id,
407
+ extra_headers=extra_headers,
408
+ extra_query=extra_query,
409
+ extra_body=extra_body,
410
+ timeout=timeout,
411
+ )
412
+ if not response.tasks:
413
+ raise ValueError("Expected at least one task to be created")
414
+ self._client.cloud.tasks.poll(
415
+ task_id=response.tasks[0],
416
+ extra_headers=extra_headers,
417
+ polling_interval_seconds=polling_interval_seconds,
418
+ )
419
+
338
420
  def get(
339
421
  self,
340
422
  network_id: str,
@@ -474,6 +556,56 @@ class AsyncNetworksResource(AsyncAPIResource):
474
556
  cast_to=TaskIDList,
475
557
  )
476
558
 
559
+ async def create_and_poll(
560
+ self,
561
+ *,
562
+ project_id: int | None = None,
563
+ region_id: int | None = None,
564
+ name: str,
565
+ create_router: bool | NotGiven = NOT_GIVEN,
566
+ tags: Dict[str, str] | NotGiven = NOT_GIVEN,
567
+ type: Literal["vlan", "vxlan"] | NotGiven = NOT_GIVEN,
568
+ polling_interval_seconds: int | NotGiven = NOT_GIVEN,
569
+ # Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
570
+ # The extra values given here take precedence over values defined on the client or passed to this method.
571
+ extra_headers: Headers | None = None,
572
+ extra_query: Query | None = None,
573
+ extra_body: Body | None = None,
574
+ timeout: float | httpx.Timeout | None | NotGiven = NOT_GIVEN,
575
+ ) -> Network:
576
+ """Create network and poll for the result."""
577
+ response = await self.create(
578
+ project_id=project_id,
579
+ region_id=region_id,
580
+ name=name,
581
+ create_router=create_router,
582
+ tags=tags,
583
+ type=type,
584
+ extra_headers=extra_headers,
585
+ extra_query=extra_query,
586
+ extra_body=extra_body,
587
+ timeout=timeout,
588
+ )
589
+ if not response.tasks or len(response.tasks) != 1:
590
+ raise ValueError(f"Expected exactly one task to be created")
591
+ task = await self._client.cloud.tasks.poll(
592
+ task_id=response.tasks[0],
593
+ extra_headers=extra_headers,
594
+ polling_interval_seconds=polling_interval_seconds,
595
+ )
596
+ if (
597
+ not task.created_resources
598
+ or not task.created_resources.networks
599
+ or len(task.created_resources.networks) != 1
600
+ ):
601
+ raise ValueError(f"Expected exactly one resource to be created in a task")
602
+ return await self.get(
603
+ network_id=task.created_resources.networks[0],
604
+ project_id=project_id,
605
+ region_id=region_id,
606
+ extra_headers=extra_headers,
607
+ )
608
+
477
609
  async def update(
478
610
  self,
479
611
  network_id: str,
@@ -562,7 +694,7 @@ class AsyncNetworksResource(AsyncAPIResource):
562
694
  name: str | NotGiven = NOT_GIVEN,
563
695
  offset: int | NotGiven = NOT_GIVEN,
564
696
  order_by: Literal["created_at.asc", "created_at.desc", "name.asc", "name.desc"] | NotGiven = NOT_GIVEN,
565
- tag_key: List[str] | NotGiven = NOT_GIVEN,
697
+ tag_key: SequenceNotStr[str] | NotGiven = NOT_GIVEN,
566
698
  tag_key_value: str | NotGiven = NOT_GIVEN,
567
699
  # Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
568
700
  # The extra values given here take precedence over values defined on the client or passed to this method.
@@ -673,6 +805,38 @@ class AsyncNetworksResource(AsyncAPIResource):
673
805
  cast_to=TaskIDList,
674
806
  )
675
807
 
808
+ async def delete_and_poll(
809
+ self,
810
+ network_id: str,
811
+ *,
812
+ project_id: int | None = None,
813
+ region_id: int | None = None,
814
+ polling_interval_seconds: int | NotGiven = NOT_GIVEN,
815
+ # Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
816
+ # The extra values given here take precedence over values defined on the client or passed to this method.
817
+ extra_headers: Headers | None = None,
818
+ extra_query: Query | None = None,
819
+ extra_body: Body | None = None,
820
+ timeout: float | httpx.Timeout | None | NotGiven = NOT_GIVEN,
821
+ ) -> None:
822
+ """Delete network and poll for the result."""
823
+ response = await self.delete(
824
+ network_id=network_id,
825
+ project_id=project_id,
826
+ region_id=region_id,
827
+ extra_headers=extra_headers,
828
+ extra_query=extra_query,
829
+ extra_body=extra_body,
830
+ timeout=timeout,
831
+ )
832
+ if not response.tasks:
833
+ raise ValueError("Expected at least one task to be created")
834
+ await self._client.cloud.tasks.poll(
835
+ task_id=response.tasks[0],
836
+ extra_headers=extra_headers,
837
+ polling_interval_seconds=polling_interval_seconds,
838
+ )
839
+
676
840
  async def get(
677
841
  self,
678
842
  network_id: str,
@@ -726,6 +890,9 @@ class NetworksResourceWithRawResponse:
726
890
  self.create = to_raw_response_wrapper(
727
891
  networks.create,
728
892
  )
893
+ self.create_and_poll = to_raw_response_wrapper(
894
+ networks.create_and_poll,
895
+ )
729
896
  self.update = to_raw_response_wrapper(
730
897
  networks.update,
731
898
  )
@@ -735,6 +902,9 @@ class NetworksResourceWithRawResponse:
735
902
  self.delete = to_raw_response_wrapper(
736
903
  networks.delete,
737
904
  )
905
+ self.delete_and_poll = to_raw_response_wrapper(
906
+ networks.delete_and_poll,
907
+ )
738
908
  self.get = to_raw_response_wrapper(
739
909
  networks.get,
740
910
  )
@@ -755,6 +925,9 @@ class AsyncNetworksResourceWithRawResponse:
755
925
  self.create = async_to_raw_response_wrapper(
756
926
  networks.create,
757
927
  )
928
+ self.create_and_poll = async_to_raw_response_wrapper(
929
+ networks.create_and_poll,
930
+ )
758
931
  self.update = async_to_raw_response_wrapper(
759
932
  networks.update,
760
933
  )
@@ -764,6 +937,9 @@ class AsyncNetworksResourceWithRawResponse:
764
937
  self.delete = async_to_raw_response_wrapper(
765
938
  networks.delete,
766
939
  )
940
+ self.delete_and_poll = async_to_raw_response_wrapper(
941
+ networks.delete_and_poll,
942
+ )
767
943
  self.get = async_to_raw_response_wrapper(
768
944
  networks.get,
769
945
  )
@@ -784,6 +960,9 @@ class NetworksResourceWithStreamingResponse:
784
960
  self.create = to_streamed_response_wrapper(
785
961
  networks.create,
786
962
  )
963
+ self.create_and_poll = to_streamed_response_wrapper(
964
+ networks.create_and_poll,
965
+ )
787
966
  self.update = to_streamed_response_wrapper(
788
967
  networks.update,
789
968
  )
@@ -793,6 +972,9 @@ class NetworksResourceWithStreamingResponse:
793
972
  self.delete = to_streamed_response_wrapper(
794
973
  networks.delete,
795
974
  )
975
+ self.delete_and_poll = to_streamed_response_wrapper(
976
+ networks.delete_and_poll,
977
+ )
796
978
  self.get = to_streamed_response_wrapper(
797
979
  networks.get,
798
980
  )
@@ -813,6 +995,9 @@ class AsyncNetworksResourceWithStreamingResponse:
813
995
  self.create = async_to_streamed_response_wrapper(
814
996
  networks.create,
815
997
  )
998
+ self.create_and_poll = async_to_streamed_response_wrapper(
999
+ networks.create_and_poll,
1000
+ )
816
1001
  self.update = async_to_streamed_response_wrapper(
817
1002
  networks.update,
818
1003
  )
@@ -822,6 +1007,9 @@ class AsyncNetworksResourceWithStreamingResponse:
822
1007
  self.delete = async_to_streamed_response_wrapper(
823
1008
  networks.delete,
824
1009
  )
1010
+ self.delete_and_poll = async_to_streamed_response_wrapper(
1011
+ networks.delete_and_poll,
1012
+ )
825
1013
  self.get = async_to_streamed_response_wrapper(
826
1014
  networks.get,
827
1015
  )
@@ -2,12 +2,12 @@
2
2
 
3
3
  from __future__ import annotations
4
4
 
5
- from typing import Dict, List, Iterable, Optional
5
+ from typing import Dict, Iterable, Optional
6
6
  from typing_extensions import Literal
7
7
 
8
8
  import httpx
9
9
 
10
- from ...._types import NOT_GIVEN, Body, Query, Headers, NoneType, NotGiven
10
+ from ...._types import NOT_GIVEN, Body, Query, Headers, NoneType, NotGiven, SequenceNotStr
11
11
  from ...._utils import maybe_transform, async_maybe_transform
12
12
  from ...._compat import cached_property
13
13
  from ...._resource import SyncAPIResource, AsyncAPIResource
@@ -58,7 +58,7 @@ class SubnetsResource(SyncAPIResource):
58
58
  name: str,
59
59
  network_id: str,
60
60
  connect_to_network_router: bool | NotGiven = NOT_GIVEN,
61
- dns_nameservers: Optional[List[str]] | NotGiven = NOT_GIVEN,
61
+ dns_nameservers: Optional[SequenceNotStr[str]] | NotGiven = NOT_GIVEN,
62
62
  enable_dhcp: bool | NotGiven = NOT_GIVEN,
63
63
  gateway_ip: Optional[str] | NotGiven = NOT_GIVEN,
64
64
  host_routes: Optional[Iterable[subnet_create_params.HostRoute]] | NotGiven = NOT_GIVEN,
@@ -148,13 +148,73 @@ class SubnetsResource(SyncAPIResource):
148
148
  cast_to=TaskIDList,
149
149
  )
150
150
 
151
+ def create_and_poll(
152
+ self,
153
+ *,
154
+ project_id: int | None = None,
155
+ region_id: int | None = None,
156
+ cidr: str,
157
+ name: str,
158
+ network_id: str,
159
+ connect_to_network_router: bool | NotGiven = NOT_GIVEN,
160
+ dns_nameservers: Optional[SequenceNotStr[str]] | NotGiven = NOT_GIVEN,
161
+ enable_dhcp: bool | NotGiven = NOT_GIVEN,
162
+ gateway_ip: Optional[str] | NotGiven = NOT_GIVEN,
163
+ host_routes: Optional[Iterable[subnet_create_params.HostRoute]] | NotGiven = NOT_GIVEN,
164
+ ip_version: IPVersion | NotGiven = NOT_GIVEN,
165
+ router_id_to_connect: Optional[str] | NotGiven = NOT_GIVEN,
166
+ tags: Dict[str, str] | NotGiven = NOT_GIVEN,
167
+ polling_interval_seconds: int | NotGiven = NOT_GIVEN,
168
+ # Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
169
+ # The extra values given here take precedence over values defined on the client or passed to this method.
170
+ extra_headers: Headers | None = None,
171
+ extra_query: Query | None = None,
172
+ extra_body: Body | None = None,
173
+ timeout: float | httpx.Timeout | None | NotGiven = NOT_GIVEN,
174
+ ) -> Subnet:
175
+ """Create subnet and poll for the result."""
176
+ response = self.create(
177
+ project_id=project_id,
178
+ region_id=region_id,
179
+ cidr=cidr,
180
+ name=name,
181
+ network_id=network_id,
182
+ connect_to_network_router=connect_to_network_router,
183
+ dns_nameservers=dns_nameservers,
184
+ enable_dhcp=enable_dhcp,
185
+ gateway_ip=gateway_ip,
186
+ host_routes=host_routes,
187
+ ip_version=ip_version,
188
+ router_id_to_connect=router_id_to_connect,
189
+ tags=tags,
190
+ extra_headers=extra_headers,
191
+ extra_query=extra_query,
192
+ extra_body=extra_body,
193
+ timeout=timeout,
194
+ )
195
+ if not response.tasks or len(response.tasks) != 1:
196
+ raise ValueError(f"Expected exactly one task to be created")
197
+ task = self._client.cloud.tasks.poll(
198
+ task_id=response.tasks[0],
199
+ extra_headers=extra_headers,
200
+ polling_interval_seconds=polling_interval_seconds,
201
+ )
202
+ if not task.created_resources or not task.created_resources.subnets or len(task.created_resources.subnets) != 1:
203
+ raise ValueError(f"Expected exactly one resource to be created in a task")
204
+ return self.get(
205
+ subnet_id=task.created_resources.subnets[0],
206
+ project_id=project_id,
207
+ region_id=region_id,
208
+ extra_headers=extra_headers,
209
+ )
210
+
151
211
  def update(
152
212
  self,
153
213
  subnet_id: str,
154
214
  *,
155
215
  project_id: int | None = None,
156
216
  region_id: int | None = None,
157
- dns_nameservers: Optional[List[str]] | NotGiven = NOT_GIVEN,
217
+ dns_nameservers: Optional[SequenceNotStr[str]] | NotGiven = NOT_GIVEN,
158
218
  enable_dhcp: Optional[bool] | NotGiven = NOT_GIVEN,
159
219
  gateway_ip: Optional[str] | NotGiven = NOT_GIVEN,
160
220
  host_routes: Optional[Iterable[subnet_update_params.HostRoute]] | NotGiven = NOT_GIVEN,
@@ -266,7 +326,7 @@ class SubnetsResource(SyncAPIResource):
266
326
  "updated_at.desc",
267
327
  ]
268
328
  | NotGiven = NOT_GIVEN,
269
- tag_key: List[str] | NotGiven = NOT_GIVEN,
329
+ tag_key: SequenceNotStr[str] | NotGiven = NOT_GIVEN,
270
330
  tag_key_value: str | NotGiven = NOT_GIVEN,
271
331
  # Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
272
332
  # The extra values given here take precedence over values defined on the client or passed to this method.
@@ -454,7 +514,7 @@ class AsyncSubnetsResource(AsyncAPIResource):
454
514
  name: str,
455
515
  network_id: str,
456
516
  connect_to_network_router: bool | NotGiven = NOT_GIVEN,
457
- dns_nameservers: Optional[List[str]] | NotGiven = NOT_GIVEN,
517
+ dns_nameservers: Optional[SequenceNotStr[str]] | NotGiven = NOT_GIVEN,
458
518
  enable_dhcp: bool | NotGiven = NOT_GIVEN,
459
519
  gateway_ip: Optional[str] | NotGiven = NOT_GIVEN,
460
520
  host_routes: Optional[Iterable[subnet_create_params.HostRoute]] | NotGiven = NOT_GIVEN,
@@ -544,13 +604,73 @@ class AsyncSubnetsResource(AsyncAPIResource):
544
604
  cast_to=TaskIDList,
545
605
  )
546
606
 
607
+ async def create_and_poll(
608
+ self,
609
+ *,
610
+ project_id: int | None = None,
611
+ region_id: int | None = None,
612
+ cidr: str,
613
+ name: str,
614
+ network_id: str,
615
+ connect_to_network_router: bool | NotGiven = NOT_GIVEN,
616
+ dns_nameservers: Optional[SequenceNotStr[str]] | NotGiven = NOT_GIVEN,
617
+ enable_dhcp: bool | NotGiven = NOT_GIVEN,
618
+ gateway_ip: Optional[str] | NotGiven = NOT_GIVEN,
619
+ host_routes: Optional[Iterable[subnet_create_params.HostRoute]] | NotGiven = NOT_GIVEN,
620
+ ip_version: IPVersion | NotGiven = NOT_GIVEN,
621
+ router_id_to_connect: Optional[str] | NotGiven = NOT_GIVEN,
622
+ tags: Dict[str, str] | NotGiven = NOT_GIVEN,
623
+ polling_interval_seconds: int | NotGiven = NOT_GIVEN,
624
+ # Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
625
+ # The extra values given here take precedence over values defined on the client or passed to this method.
626
+ extra_headers: Headers | None = None,
627
+ extra_query: Query | None = None,
628
+ extra_body: Body | None = None,
629
+ timeout: float | httpx.Timeout | None | NotGiven = NOT_GIVEN,
630
+ ) -> Subnet:
631
+ """Create subnet and poll for the result."""
632
+ response = await self.create(
633
+ project_id=project_id,
634
+ region_id=region_id,
635
+ cidr=cidr,
636
+ name=name,
637
+ network_id=network_id,
638
+ connect_to_network_router=connect_to_network_router,
639
+ dns_nameservers=dns_nameservers,
640
+ enable_dhcp=enable_dhcp,
641
+ gateway_ip=gateway_ip,
642
+ host_routes=host_routes,
643
+ ip_version=ip_version,
644
+ router_id_to_connect=router_id_to_connect,
645
+ tags=tags,
646
+ extra_headers=extra_headers,
647
+ extra_query=extra_query,
648
+ extra_body=extra_body,
649
+ timeout=timeout,
650
+ )
651
+ if not response.tasks or len(response.tasks) != 1:
652
+ raise ValueError(f"Expected exactly one task to be created")
653
+ task = await self._client.cloud.tasks.poll(
654
+ task_id=response.tasks[0],
655
+ extra_headers=extra_headers,
656
+ polling_interval_seconds=polling_interval_seconds,
657
+ )
658
+ if not task.created_resources or not task.created_resources.subnets or len(task.created_resources.subnets) != 1:
659
+ raise ValueError(f"Expected exactly one resource to be created in a task")
660
+ return await self.get(
661
+ subnet_id=task.created_resources.subnets[0],
662
+ project_id=project_id,
663
+ region_id=region_id,
664
+ extra_headers=extra_headers,
665
+ )
666
+
547
667
  async def update(
548
668
  self,
549
669
  subnet_id: str,
550
670
  *,
551
671
  project_id: int | None = None,
552
672
  region_id: int | None = None,
553
- dns_nameservers: Optional[List[str]] | NotGiven = NOT_GIVEN,
673
+ dns_nameservers: Optional[SequenceNotStr[str]] | NotGiven = NOT_GIVEN,
554
674
  enable_dhcp: Optional[bool] | NotGiven = NOT_GIVEN,
555
675
  gateway_ip: Optional[str] | NotGiven = NOT_GIVEN,
556
676
  host_routes: Optional[Iterable[subnet_update_params.HostRoute]] | NotGiven = NOT_GIVEN,
@@ -662,7 +782,7 @@ class AsyncSubnetsResource(AsyncAPIResource):
662
782
  "updated_at.desc",
663
783
  ]
664
784
  | NotGiven = NOT_GIVEN,
665
- tag_key: List[str] | NotGiven = NOT_GIVEN,
785
+ tag_key: SequenceNotStr[str] | NotGiven = NOT_GIVEN,
666
786
  tag_key_value: str | NotGiven = NOT_GIVEN,
667
787
  # Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
668
788
  # The extra values given here take precedence over values defined on the client or passed to this method.
@@ -828,6 +948,9 @@ class SubnetsResourceWithRawResponse:
828
948
  self.create = to_raw_response_wrapper(
829
949
  subnets.create,
830
950
  )
951
+ self.create_and_poll = to_raw_response_wrapper(
952
+ subnets.create_and_poll,
953
+ )
831
954
  self.update = to_raw_response_wrapper(
832
955
  subnets.update,
833
956
  )
@@ -849,6 +972,9 @@ class AsyncSubnetsResourceWithRawResponse:
849
972
  self.create = async_to_raw_response_wrapper(
850
973
  subnets.create,
851
974
  )
975
+ self.create_and_poll = async_to_raw_response_wrapper(
976
+ subnets.create_and_poll,
977
+ )
852
978
  self.update = async_to_raw_response_wrapper(
853
979
  subnets.update,
854
980
  )
@@ -870,6 +996,9 @@ class SubnetsResourceWithStreamingResponse:
870
996
  self.create = to_streamed_response_wrapper(
871
997
  subnets.create,
872
998
  )
999
+ self.create_and_poll = to_streamed_response_wrapper(
1000
+ subnets.create_and_poll,
1001
+ )
873
1002
  self.update = to_streamed_response_wrapper(
874
1003
  subnets.update,
875
1004
  )
@@ -891,6 +1020,9 @@ class AsyncSubnetsResourceWithStreamingResponse:
891
1020
  self.create = async_to_streamed_response_wrapper(
892
1021
  subnets.create,
893
1022
  )
1023
+ self.create_and_poll = async_to_streamed_response_wrapper(
1024
+ subnets.create_and_poll,
1025
+ )
894
1026
  self.update = async_to_streamed_response_wrapper(
895
1027
  subnets.update,
896
1028
  )
@@ -2,11 +2,9 @@
2
2
 
3
3
  from __future__ import annotations
4
4
 
5
- from typing import List
6
-
7
5
  import httpx
8
6
 
9
- from ...._types import NOT_GIVEN, Body, Query, Headers, NotGiven
7
+ from ...._types import NOT_GIVEN, Body, Query, Headers, NotGiven, SequenceNotStr
10
8
  from ...._utils import maybe_transform, async_maybe_transform
11
9
  from ...._compat import cached_property
12
10
  from ...._resource import SyncAPIResource, AsyncAPIResource
@@ -133,7 +131,7 @@ class VipResource(SyncAPIResource):
133
131
  *,
134
132
  project_id: int | None = None,
135
133
  region_id: int | None = None,
136
- port_ids: List[str] | NotGiven = NOT_GIVEN,
134
+ port_ids: SequenceNotStr[str] | NotGiven = NOT_GIVEN,
137
135
  # Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
138
136
  # The extra values given here take precedence over values defined on the client or passed to this method.
139
137
  extra_headers: Headers | None = None,
@@ -221,7 +219,7 @@ class VipResource(SyncAPIResource):
221
219
  *,
222
220
  project_id: int | None = None,
223
221
  region_id: int | None = None,
224
- port_ids: List[str] | NotGiven = NOT_GIVEN,
222
+ port_ids: SequenceNotStr[str] | NotGiven = NOT_GIVEN,
225
223
  # Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
226
224
  # The extra values given here take precedence over values defined on the client or passed to this method.
227
225
  extra_headers: Headers | None = None,
@@ -365,7 +363,7 @@ class AsyncVipResource(AsyncAPIResource):
365
363
  *,
366
364
  project_id: int | None = None,
367
365
  region_id: int | None = None,
368
- port_ids: List[str] | NotGiven = NOT_GIVEN,
366
+ port_ids: SequenceNotStr[str] | NotGiven = NOT_GIVEN,
369
367
  # Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
370
368
  # The extra values given here take precedence over values defined on the client or passed to this method.
371
369
  extra_headers: Headers | None = None,
@@ -453,7 +451,7 @@ class AsyncVipResource(AsyncAPIResource):
453
451
  *,
454
452
  project_id: int | None = None,
455
453
  region_id: int | None = None,
456
- port_ids: List[str] | NotGiven = NOT_GIVEN,
454
+ port_ids: SequenceNotStr[str] | NotGiven = NOT_GIVEN,
457
455
  # Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
458
456
  # The extra values given here take precedence over values defined on the client or passed to this method.
459
457
  extra_headers: Headers | None = None,
@@ -2,7 +2,7 @@
2
2
 
3
3
  from __future__ import annotations
4
4
 
5
- from typing import List, Iterable, Optional
5
+ from typing import Iterable, Optional
6
6
 
7
7
  import httpx
8
8
 
@@ -14,7 +14,7 @@ from .rules import (
14
14
  RulesResourceWithStreamingResponse,
15
15
  AsyncRulesResourceWithStreamingResponse,
16
16
  )
17
- from ...._types import NOT_GIVEN, Body, Query, Headers, NoneType, NotGiven
17
+ from ...._types import NOT_GIVEN, Body, Query, Headers, NoneType, NotGiven, SequenceNotStr
18
18
  from ...._utils import maybe_transform, async_maybe_transform
19
19
  from ...._compat import cached_property
20
20
  from ...._resource import SyncAPIResource, AsyncAPIResource
@@ -68,7 +68,7 @@ class SecurityGroupsResource(SyncAPIResource):
68
68
  project_id: int | None = None,
69
69
  region_id: int | None = None,
70
70
  security_group: security_group_create_params.SecurityGroup,
71
- instances: List[str] | NotGiven = NOT_GIVEN,
71
+ instances: SequenceNotStr[str] | NotGiven = NOT_GIVEN,
72
72
  # Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
73
73
  # The extra values given here take precedence over values defined on the client or passed to this method.
74
74
  extra_headers: Headers | None = None,
@@ -192,7 +192,7 @@ class SecurityGroupsResource(SyncAPIResource):
192
192
  region_id: int | None = None,
193
193
  limit: int | NotGiven = NOT_GIVEN,
194
194
  offset: int | NotGiven = NOT_GIVEN,
195
- tag_key: List[str] | NotGiven = NOT_GIVEN,
195
+ tag_key: SequenceNotStr[str] | NotGiven = NOT_GIVEN,
196
196
  tag_key_value: str | NotGiven = NOT_GIVEN,
197
197
  # Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
198
198
  # The extra values given here take precedence over values defined on the client or passed to this method.
@@ -438,7 +438,7 @@ class AsyncSecurityGroupsResource(AsyncAPIResource):
438
438
  project_id: int | None = None,
439
439
  region_id: int | None = None,
440
440
  security_group: security_group_create_params.SecurityGroup,
441
- instances: List[str] | NotGiven = NOT_GIVEN,
441
+ instances: SequenceNotStr[str] | NotGiven = NOT_GIVEN,
442
442
  # Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
443
443
  # The extra values given here take precedence over values defined on the client or passed to this method.
444
444
  extra_headers: Headers | None = None,
@@ -562,7 +562,7 @@ class AsyncSecurityGroupsResource(AsyncAPIResource):
562
562
  region_id: int | None = None,
563
563
  limit: int | NotGiven = NOT_GIVEN,
564
564
  offset: int | NotGiven = NOT_GIVEN,
565
- tag_key: List[str] | NotGiven = NOT_GIVEN,
565
+ tag_key: SequenceNotStr[str] | NotGiven = NOT_GIVEN,
566
566
  tag_key_value: str | NotGiven = NOT_GIVEN,
567
567
  # Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
568
568
  # The extra values given here take precedence over values defined on the client or passed to this method.