gcore 0.1.0a2__py3-none-any.whl → 0.3.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 (293) hide show
  1. gcore/__init__.py +5 -0
  2. gcore/_base_client.py +22 -2
  3. gcore/_client.py +9 -0
  4. gcore/_models.py +2 -0
  5. gcore/_types.py +2 -0
  6. gcore/_utils/_proxy.py +4 -1
  7. gcore/_utils/_resources_proxy.py +24 -0
  8. gcore/_version.py +1 -1
  9. gcore/resources/__init__.py +14 -0
  10. gcore/resources/cloud/baremetal/flavors.py +2 -2
  11. gcore/resources/cloud/baremetal/images.py +2 -2
  12. gcore/resources/cloud/baremetal/servers.py +280 -52
  13. gcore/resources/cloud/billing_reservations.py +24 -0
  14. gcore/resources/cloud/file_shares/file_shares.py +16 -0
  15. gcore/resources/cloud/floating_ips.py +4 -4
  16. gcore/resources/cloud/gpu_baremetal_clusters/gpu_baremetal_clusters.py +358 -8
  17. gcore/resources/cloud/gpu_baremetal_clusters/images.py +206 -2
  18. gcore/resources/cloud/gpu_baremetal_clusters/servers.py +84 -4
  19. gcore/resources/cloud/inference/deployments/deployments.py +328 -10
  20. gcore/resources/cloud/instances/flavors.py +2 -2
  21. gcore/resources/cloud/instances/images.py +318 -2
  22. gcore/resources/cloud/instances/instances.py +534 -70
  23. gcore/resources/cloud/instances/interfaces.py +4 -4
  24. gcore/resources/cloud/load_balancers/flavors.py +2 -2
  25. gcore/resources/cloud/load_balancers/l7_policies/l7_policies.py +302 -20
  26. gcore/resources/cloud/load_balancers/l7_policies/rules.py +326 -0
  27. gcore/resources/cloud/load_balancers/listeners.py +385 -20
  28. gcore/resources/cloud/load_balancers/load_balancers.py +392 -24
  29. gcore/resources/cloud/load_balancers/pools/health_monitors.py +24 -0
  30. gcore/resources/cloud/load_balancers/pools/members.py +34 -6
  31. gcore/resources/cloud/load_balancers/pools/pools.py +388 -8
  32. gcore/resources/cloud/networks/networks.py +72 -16
  33. gcore/resources/cloud/networks/subnets.py +6 -6
  34. gcore/resources/cloud/registries/registries.py +6 -10
  35. gcore/resources/cloud/registries/users.py +4 -10
  36. gcore/resources/cloud/reserved_fixed_ips/reserved_fixed_ips.py +10 -10
  37. gcore/resources/cloud/secrets.py +56 -11
  38. gcore/resources/cloud/security_groups/security_groups.py +2 -2
  39. gcore/resources/cloud/ssh_keys.py +2 -2
  40. gcore/resources/cloud/tasks.py +203 -184
  41. gcore/resources/cloud/users/role_assignments.py +4 -4
  42. gcore/resources/cloud/volumes.py +18 -18
  43. gcore/resources/waap/__init__.py +131 -0
  44. gcore/resources/waap/advanced_rules.py +135 -0
  45. gcore/resources/waap/clients.py +135 -0
  46. gcore/resources/waap/custom_page_sets.py +805 -0
  47. gcore/resources/waap/domains/__init__.py +173 -0
  48. gcore/resources/waap/domains/advanced_rules.py +876 -0
  49. gcore/resources/waap/domains/analytics/__init__.py +33 -0
  50. gcore/resources/waap/domains/analytics/analytics.py +676 -0
  51. gcore/resources/waap/domains/analytics/requests.py +378 -0
  52. gcore/resources/waap/domains/api_discovery/__init__.py +33 -0
  53. gcore/resources/waap/domains/api_discovery/api_discovery.py +530 -0
  54. gcore/resources/waap/domains/api_discovery/scan_results.py +352 -0
  55. gcore/resources/waap/domains/api_path_groups.py +163 -0
  56. gcore/resources/waap/domains/api_paths.py +771 -0
  57. gcore/resources/waap/domains/custom_rules.py +889 -0
  58. gcore/resources/waap/domains/domains.py +914 -0
  59. gcore/resources/waap/domains/firewall_rules.py +884 -0
  60. gcore/resources/waap/domains/insight_silences.py +689 -0
  61. gcore/resources/waap/domains/insights.py +425 -0
  62. gcore/resources/waap/domains/policies.py +173 -0
  63. gcore/resources/waap/domains/settings.py +271 -0
  64. gcore/resources/waap/ip_info.py +1017 -0
  65. gcore/resources/waap/organizations.py +217 -0
  66. gcore/resources/waap/statistics.py +225 -0
  67. gcore/resources/waap/tags.py +233 -0
  68. gcore/resources/waap/waap.py +391 -0
  69. gcore/types/cloud/__init__.py +1 -0
  70. gcore/types/cloud/allowed_address_pairs.py +2 -2
  71. gcore/types/cloud/baremetal/baremetal_server.py +1 -1
  72. gcore/types/cloud/baremetal/image_list_params.py +1 -1
  73. gcore/types/cloud/baremetal/server_create_params.py +9 -9
  74. gcore/types/cloud/baremetal/server_list_params.py +8 -8
  75. gcore/types/cloud/baremetal/server_rebuild_params.py +1 -1
  76. gcore/types/cloud/baremetal_flavor.py +3 -3
  77. gcore/types/cloud/billing_reservation_list_params.py +5 -0
  78. gcore/types/cloud/container_probe_config.py +1 -1
  79. gcore/types/cloud/container_probe_config_create_param.py +2 -3
  80. gcore/types/cloud/container_scale_triggers.py +2 -2
  81. gcore/types/cloud/file_share.py +3 -0
  82. gcore/types/cloud/file_share_list_params.py +7 -1
  83. gcore/types/cloud/floating_ip_detailed.py +1 -1
  84. gcore/types/cloud/floating_ip_list_params.py +2 -2
  85. gcore/types/cloud/gpu_baremetal_cluster.py +1 -1
  86. gcore/types/cloud/gpu_baremetal_cluster_create_params.py +21 -1
  87. gcore/types/cloud/gpu_baremetal_cluster_delete_params.py +1 -1
  88. gcore/types/cloud/gpu_baremetal_cluster_rebuild_params.py +1 -1
  89. gcore/types/cloud/gpu_baremetal_cluster_server.py +1 -1
  90. gcore/types/cloud/gpu_baremetal_clusters/image_upload_params.py +1 -1
  91. gcore/types/cloud/gpu_baremetal_clusters/server_attach_interface_params.py +10 -10
  92. gcore/types/cloud/gpu_baremetal_flavor.py +3 -3
  93. gcore/types/cloud/image.py +1 -1
  94. gcore/types/cloud/inference/deployment_create_params.py +4 -4
  95. gcore/types/cloud/inference/deployment_update_params.py +206 -9
  96. gcore/types/cloud/inference/inference.py +5 -5
  97. gcore/types/cloud/instance.py +1 -1
  98. gcore/types/cloud/instance_create_params.py +8 -10
  99. gcore/types/cloud/instance_list_params.py +8 -8
  100. gcore/types/cloud/instances/flavor_list_suitable_params.py +4 -1
  101. gcore/types/cloud/instances/image_list_params.py +1 -1
  102. gcore/types/cloud/instances/instance_flavor.py +3 -3
  103. gcore/types/cloud/instances/interface_attach_params.py +10 -10
  104. gcore/types/cloud/load_balancer_create_params.py +17 -15
  105. gcore/types/cloud/load_balancer_flavor_detail.py +3 -3
  106. gcore/types/cloud/load_balancer_l7_policy.py +5 -5
  107. gcore/types/cloud/load_balancer_list_params.py +5 -5
  108. gcore/types/cloud/load_balancer_listener_detail.py +17 -17
  109. gcore/types/cloud/load_balancer_pool.py +13 -13
  110. gcore/types/cloud/load_balancer_pool_list.py +99 -4
  111. gcore/types/cloud/load_balancers/l7_policy_create_params.py +5 -5
  112. gcore/types/cloud/load_balancers/l7_policy_replace_params.py +5 -5
  113. gcore/types/cloud/load_balancers/listener_create_params.py +6 -4
  114. gcore/types/cloud/load_balancers/listener_get_params.py +3 -1
  115. gcore/types/cloud/load_balancers/listener_list_params.py +4 -2
  116. gcore/types/cloud/load_balancers/listener_update_params.py +5 -3
  117. gcore/types/cloud/load_balancers/pool_create_params.py +6 -4
  118. gcore/types/cloud/load_balancers/pool_list_params.py +5 -6
  119. gcore/types/cloud/load_balancers/pool_update_params.py +6 -4
  120. gcore/types/cloud/load_balancers/pools/health_monitor_create_params.py +2 -0
  121. gcore/types/cloud/load_balancers/pools/member_add_params.py +5 -3
  122. gcore/types/cloud/member.py +2 -2
  123. gcore/types/cloud/network.py +22 -22
  124. gcore/types/cloud/network_create_params.py +2 -0
  125. gcore/types/cloud/network_details.py +25 -24
  126. gcore/types/cloud/network_list_params.py +15 -10
  127. gcore/types/cloud/network_update_params.py +2 -0
  128. gcore/types/cloud/networks/subnet_create_params.py +1 -1
  129. gcore/types/cloud/networks/subnet_list_params.py +2 -2
  130. gcore/types/cloud/quota_get_all_response.py +18 -0
  131. gcore/types/cloud/quota_get_by_region_response.py +18 -0
  132. gcore/types/cloud/quotas/request_create_params.py +9 -0
  133. gcore/types/cloud/quotas/request_get_response.py +9 -0
  134. gcore/types/cloud/quotas/request_list_response.py +9 -0
  135. gcore/types/cloud/region.py +4 -4
  136. gcore/types/cloud/registries/user_create_multiple_params.py +3 -5
  137. gcore/types/cloud/registries/user_create_params.py +3 -5
  138. gcore/types/cloud/registry_create_params.py +3 -5
  139. gcore/types/cloud/reserved_fixed_ip_create_params.py +2 -2
  140. gcore/types/cloud/reserved_fixed_ip_list_params.py +3 -3
  141. gcore/types/cloud/secret_list_params.py +24 -0
  142. gcore/types/cloud/security_group_list_params.py +1 -1
  143. gcore/types/cloud/session_persistence.py +1 -1
  144. gcore/types/cloud/ssh_key_created.py +3 -6
  145. gcore/types/cloud/task.py +1 -4
  146. gcore/types/cloud/task_list_params.py +56 -46
  147. gcore/types/cloud/users/role_assignment_create_params.py +1 -1
  148. gcore/types/cloud/users/role_assignment_update_params.py +1 -1
  149. gcore/types/cloud/volume_create_params.py +6 -6
  150. gcore/types/cloud/volume_list_params.py +3 -3
  151. gcore/types/waap/__init__.py +108 -0
  152. gcore/types/waap/client_me_response.py +34 -0
  153. gcore/types/waap/custom_page_set_create_params.py +35 -0
  154. gcore/types/waap/custom_page_set_list_params.py +25 -0
  155. gcore/types/waap/custom_page_set_preview_params.py +34 -0
  156. gcore/types/waap/custom_page_set_update_params.py +35 -0
  157. gcore/types/waap/domain_list_params.py +30 -0
  158. gcore/types/waap/domain_list_rule_sets_response.py +10 -0
  159. gcore/types/waap/domain_update_params.py +12 -0
  160. gcore/types/waap/domains/__init__.py +47 -0
  161. gcore/types/waap/domains/advanced_rule_create_params.py +80 -0
  162. gcore/types/waap/domains/advanced_rule_list_params.py +58 -0
  163. gcore/types/waap/domains/advanced_rule_update_params.py +83 -0
  164. gcore/types/waap/domains/analytics/__init__.py +5 -0
  165. gcore/types/waap/domains/analytics/request_list_params.py +53 -0
  166. gcore/types/waap/domains/analytics_get_event_statistics_params.py +34 -0
  167. gcore/types/waap/domains/analytics_list_ddos_attacks_params.py +28 -0
  168. gcore/types/waap/domains/analytics_list_ddos_info_params.py +31 -0
  169. gcore/types/waap/domains/analytics_list_event_traffic_params.py +26 -0
  170. gcore/types/waap/domains/analytics_list_event_traffic_response.py +10 -0
  171. gcore/types/waap/domains/api_discovery/__init__.py +7 -0
  172. gcore/types/waap/domains/api_discovery/scan_result_get_response.py +29 -0
  173. gcore/types/waap/domains/api_discovery/scan_result_list_params.py +41 -0
  174. gcore/types/waap/domains/api_discovery/scan_result_list_response.py +29 -0
  175. gcore/types/waap/domains/api_discovery_get_settings_response.py +36 -0
  176. gcore/types/waap/domains/api_discovery_scan_openapi_response.py +10 -0
  177. gcore/types/waap/domains/api_discovery_update_settings_params.py +34 -0
  178. gcore/types/waap/domains/api_discovery_update_settings_response.py +36 -0
  179. gcore/types/waap/domains/api_discovery_upload_openapi_params.py +19 -0
  180. gcore/types/waap/domains/api_discovery_upload_openapi_response.py +10 -0
  181. gcore/types/waap/domains/api_path_create_params.py +31 -0
  182. gcore/types/waap/domains/api_path_create_response.py +50 -0
  183. gcore/types/waap/domains/api_path_get_response.py +50 -0
  184. gcore/types/waap/domains/api_path_group_list_response.py +12 -0
  185. gcore/types/waap/domains/api_path_list_params.py +62 -0
  186. gcore/types/waap/domains/api_path_list_response.py +50 -0
  187. gcore/types/waap/domains/api_path_update_params.py +29 -0
  188. gcore/types/waap/domains/custom_rule_create_params.py +368 -0
  189. gcore/types/waap/domains/custom_rule_delete_multiple_params.py +13 -0
  190. gcore/types/waap/domains/custom_rule_list_params.py +35 -0
  191. gcore/types/waap/domains/custom_rule_update_params.py +371 -0
  192. gcore/types/waap/domains/firewall_rule_create_params.py +75 -0
  193. gcore/types/waap/domains/firewall_rule_delete_multiple_params.py +13 -0
  194. gcore/types/waap/domains/firewall_rule_list_params.py +33 -0
  195. gcore/types/waap/domains/firewall_rule_update_params.py +78 -0
  196. gcore/types/waap/domains/insight_list_params.py +34 -0
  197. gcore/types/waap/domains/insight_replace_params.py +17 -0
  198. gcore/types/waap/domains/insight_silence_create_params.py +28 -0
  199. gcore/types/waap/domains/insight_silence_list_params.py +33 -0
  200. gcore/types/waap/domains/insight_silence_update_params.py +28 -0
  201. gcore/types/waap/domains/setting_update_params.py +48 -0
  202. gcore/types/waap/ip_info_get_attack_time_series_params.py +12 -0
  203. gcore/types/waap/ip_info_get_attack_time_series_response.py +10 -0
  204. gcore/types/waap/ip_info_get_blocked_requests_params.py +15 -0
  205. gcore/types/waap/ip_info_get_blocked_requests_response.py +10 -0
  206. gcore/types/waap/ip_info_get_counts_params.py +19 -0
  207. gcore/types/waap/ip_info_get_ddos_attack_series_params.py +12 -0
  208. gcore/types/waap/ip_info_get_params.py +12 -0
  209. gcore/types/waap/ip_info_get_top_sessions_params.py +15 -0
  210. gcore/types/waap/ip_info_get_top_sessions_response.py +10 -0
  211. gcore/types/waap/ip_info_get_top_urls_params.py +15 -0
  212. gcore/types/waap/ip_info_get_top_urls_response.py +10 -0
  213. gcore/types/waap/ip_info_get_top_user_agents_params.py +15 -0
  214. gcore/types/waap/ip_info_get_top_user_agents_response.py +10 -0
  215. gcore/types/waap/ip_info_list_attacked_countries_params.py +12 -0
  216. gcore/types/waap/ip_info_list_attacked_countries_response.py +10 -0
  217. gcore/types/waap/organization_list_params.py +22 -0
  218. gcore/types/waap/statistic_get_usage_series_params.py +25 -0
  219. gcore/types/waap/tag_list_params.py +28 -0
  220. gcore/types/waap/waap_advanced_rule.py +83 -0
  221. gcore/types/waap/waap_advanced_rule_descriptor.py +49 -0
  222. gcore/types/waap/waap_advanced_rule_descriptor_list.py +15 -0
  223. gcore/types/waap/waap_block_csrf_page_data.py +28 -0
  224. gcore/types/waap/waap_block_csrf_page_data_param.py +28 -0
  225. gcore/types/waap/waap_block_page_data.py +28 -0
  226. gcore/types/waap/waap_block_page_data_param.py +28 -0
  227. gcore/types/waap/waap_blocked_statistics.py +36 -0
  228. gcore/types/waap/waap_captcha_page_data.py +31 -0
  229. gcore/types/waap/waap_captcha_page_data_param.py +31 -0
  230. gcore/types/waap/waap_common_tag.py +16 -0
  231. gcore/types/waap/waap_cookie_disabled_page_data.py +18 -0
  232. gcore/types/waap/waap_cookie_disabled_page_data_param.py +18 -0
  233. gcore/types/waap/waap_count_statistics.py +36 -0
  234. gcore/types/waap/waap_custom_page_preview.py +10 -0
  235. gcore/types/waap/waap_custom_page_set.py +36 -0
  236. gcore/types/waap/waap_custom_rule.py +373 -0
  237. gcore/types/waap/waap_customer_rule_state.py +7 -0
  238. gcore/types/waap/waap_ddos_attack.py +16 -0
  239. gcore/types/waap/waap_ddos_info.py +17 -0
  240. gcore/types/waap/waap_detailed_domain.py +37 -0
  241. gcore/types/waap/waap_domain_api_settings.py +22 -0
  242. gcore/types/waap/waap_domain_ddos_settings.py +31 -0
  243. gcore/types/waap/waap_domain_policy.py +29 -0
  244. gcore/types/waap/waap_domain_settings_model.py +15 -0
  245. gcore/types/waap/waap_domain_status.py +7 -0
  246. gcore/types/waap/waap_event_statistics.py +15 -0
  247. gcore/types/waap/waap_firewall_rule.py +78 -0
  248. gcore/types/waap/waap_get_account_overview_response.py +34 -0
  249. gcore/types/waap/waap_handshake_page_data.py +25 -0
  250. gcore/types/waap/waap_handshake_page_data_param.py +25 -0
  251. gcore/types/waap/waap_insight.py +38 -0
  252. gcore/types/waap/waap_insight_silence.py +28 -0
  253. gcore/types/waap/waap_insight_silence_sort_by.py +9 -0
  254. gcore/types/waap/waap_insight_sort_by.py +20 -0
  255. gcore/types/waap/waap_insight_status.py +7 -0
  256. gcore/types/waap/waap_ip_country_attack.py +16 -0
  257. gcore/types/waap/waap_ip_ddos_info_model.py +23 -0
  258. gcore/types/waap/waap_ip_info.py +57 -0
  259. gcore/types/waap/waap_ip_info_counts.py +16 -0
  260. gcore/types/waap/waap_javascript_disabled_page_data.py +18 -0
  261. gcore/types/waap/waap_javascript_disabled_page_data_param.py +18 -0
  262. gcore/types/waap/waap_network_details.py +17 -0
  263. gcore/types/waap/waap_organization.py +13 -0
  264. gcore/types/waap/waap_page_type.py +9 -0
  265. gcore/types/waap/waap_paginated_custom_page_set.py +22 -0
  266. gcore/types/waap/waap_paginated_ddos_attack.py +22 -0
  267. gcore/types/waap/waap_paginated_ddos_info.py +22 -0
  268. gcore/types/waap/waap_paginated_request_summary.py +22 -0
  269. gcore/types/waap/waap_pattern_matched_tag.py +37 -0
  270. gcore/types/waap/waap_policy_action.py +7 -0
  271. gcore/types/waap/waap_policy_mode.py +10 -0
  272. gcore/types/waap/waap_request_details.py +92 -0
  273. gcore/types/waap/waap_request_organization.py +13 -0
  274. gcore/types/waap/waap_request_summary.py +59 -0
  275. gcore/types/waap/waap_resolution.py +7 -0
  276. gcore/types/waap/waap_rule_action_type.py +7 -0
  277. gcore/types/waap/waap_rule_blocked_requests.py +16 -0
  278. gcore/types/waap/waap_rule_set.py +41 -0
  279. gcore/types/waap/waap_statistic_item.py +18 -0
  280. gcore/types/waap/waap_statistics_series.py +16 -0
  281. gcore/types/waap/waap_summary_domain.py +26 -0
  282. gcore/types/waap/waap_tag.py +16 -0
  283. gcore/types/waap/waap_time_series_attack.py +23 -0
  284. gcore/types/waap/waap_top_session.py +24 -0
  285. gcore/types/waap/waap_top_url.py +13 -0
  286. gcore/types/waap/waap_top_user_agent.py +13 -0
  287. gcore/types/waap/waap_traffic_metrics.py +68 -0
  288. gcore/types/waap/waap_traffic_type.py +28 -0
  289. gcore/types/waap/waap_user_agent_details.py +40 -0
  290. {gcore-0.1.0a2.dist-info → gcore-0.3.0.dist-info}/METADATA +3 -3
  291. {gcore-0.1.0a2.dist-info → gcore-0.3.0.dist-info}/RECORD +293 -126
  292. {gcore-0.1.0a2.dist-info → gcore-0.3.0.dist-info}/WHEEL +0 -0
  293. {gcore-0.1.0a2.dist-info → gcore-0.3.0.dist-info}/licenses/LICENSE +0 -0
@@ -331,6 +331,169 @@ class RulesResource(SyncAPIResource):
331
331
  cast_to=TaskIDList,
332
332
  )
333
333
 
334
+ def create_and_poll(
335
+ self,
336
+ l7policy_id: str,
337
+ *,
338
+ project_id: int | None = None,
339
+ region_id: int | None = None,
340
+ compare_type: Literal["CONTAINS", "ENDS_WITH", "EQUAL_TO", "REGEX", "STARTS_WITH"],
341
+ type: Literal[
342
+ "COOKIE",
343
+ "FILE_TYPE",
344
+ "HEADER",
345
+ "HOST_NAME",
346
+ "PATH",
347
+ "SSL_CONN_HAS_CERT",
348
+ "SSL_DN_FIELD",
349
+ "SSL_VERIFY_RESULT",
350
+ ],
351
+ value: str,
352
+ invert: bool | NotGiven = NOT_GIVEN,
353
+ key: str | NotGiven = NOT_GIVEN,
354
+ tags: List[str] | NotGiven = NOT_GIVEN,
355
+ polling_interval_seconds: int | NotGiven = NOT_GIVEN,
356
+ timeout: float | httpx.Timeout | None | NotGiven = NOT_GIVEN,
357
+ # Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
358
+ # The extra values given here take precedence over values defined on the client or passed to this method.
359
+ extra_headers: Headers | None = None,
360
+ extra_query: Query | None = None,
361
+ extra_body: Body | None = None,
362
+ ) -> LoadBalancerL7Rule:
363
+ response = self.create(
364
+ l7policy_id=l7policy_id,
365
+ project_id=project_id,
366
+ region_id=region_id,
367
+ compare_type=compare_type,
368
+ type=type,
369
+ value=value,
370
+ invert=invert,
371
+ key=key,
372
+ tags=tags,
373
+ extra_headers=extra_headers,
374
+ extra_query=extra_query,
375
+ extra_body=extra_body,
376
+ timeout=timeout,
377
+ )
378
+ if not response.tasks or len(response.tasks) != 1:
379
+ raise ValueError(f"Expected exactly one task to be created")
380
+ task = self._client.cloud.tasks.poll(
381
+ task_id=response.tasks[0],
382
+ extra_headers=extra_headers,
383
+ polling_interval_seconds=polling_interval_seconds,
384
+ )
385
+ if not task.created_resources or not task.created_resources.l7rules or len(task.created_resources.l7rules) != 1:
386
+ raise ValueError(f"Expected exactly one resource to be created in a task")
387
+ return self.get(
388
+ l7rule_id=task.created_resources.l7rules[0],
389
+ project_id=project_id,
390
+ region_id=region_id,
391
+ l7policy_id=l7policy_id,
392
+ extra_headers=extra_headers,
393
+ timeout=timeout,
394
+ )
395
+
396
+ def delete_and_poll(
397
+ self,
398
+ l7rule_id: str,
399
+ *,
400
+ project_id: int | None = None,
401
+ region_id: int | None = None,
402
+ l7policy_id: str,
403
+ polling_interval_seconds: int | NotGiven = NOT_GIVEN,
404
+ timeout: float | httpx.Timeout | None | NotGiven = NOT_GIVEN,
405
+ # Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
406
+ # The extra values given here take precedence over values defined on the client or passed to this method.
407
+ extra_headers: Headers | None = None,
408
+ extra_query: Query | None = None,
409
+ extra_body: Body | None = None,
410
+ ) -> None:
411
+ """
412
+ Delete L7 rule and poll for the result. Only the first task will be polled. If you need to poll more tasks, use the `tasks.poll` method.
413
+ """
414
+ response = self.delete(
415
+ l7rule_id=l7rule_id,
416
+ project_id=project_id,
417
+ region_id=region_id,
418
+ l7policy_id=l7policy_id,
419
+ extra_headers=extra_headers,
420
+ extra_query=extra_query,
421
+ extra_body=extra_body,
422
+ timeout=timeout,
423
+ )
424
+ if not response.tasks:
425
+ raise ValueError("Expected at least one task to be created")
426
+ self._client.cloud.tasks.poll(
427
+ task_id=response.tasks[0],
428
+ extra_headers=extra_headers,
429
+ polling_interval_seconds=polling_interval_seconds,
430
+ )
431
+
432
+ def replace_and_poll(
433
+ self,
434
+ l7rule_id: str,
435
+ *,
436
+ project_id: int | None = None,
437
+ region_id: int | None = None,
438
+ l7policy_id: str,
439
+ compare_type: Literal["CONTAINS", "ENDS_WITH", "EQUAL_TO", "REGEX", "STARTS_WITH"],
440
+ type: Literal[
441
+ "COOKIE",
442
+ "FILE_TYPE",
443
+ "HEADER",
444
+ "HOST_NAME",
445
+ "PATH",
446
+ "SSL_CONN_HAS_CERT",
447
+ "SSL_DN_FIELD",
448
+ "SSL_VERIFY_RESULT",
449
+ ],
450
+ value: str,
451
+ invert: bool | NotGiven = NOT_GIVEN,
452
+ key: str | NotGiven = NOT_GIVEN,
453
+ tags: List[str] | NotGiven = NOT_GIVEN,
454
+ polling_interval_seconds: int | NotGiven = NOT_GIVEN,
455
+ timeout: float | httpx.Timeout | None | NotGiven = NOT_GIVEN,
456
+ # Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
457
+ # The extra values given here take precedence over values defined on the client or passed to this method.
458
+ extra_headers: Headers | None = None,
459
+ extra_query: Query | None = None,
460
+ extra_body: Body | None = None,
461
+ ) -> LoadBalancerL7Rule:
462
+ """
463
+ Replace L7 rule and poll for the result. Only the first task will be polled. If you need to poll more tasks, use the `tasks.poll` method.
464
+ """
465
+ response = self.replace(
466
+ l7rule_id=l7rule_id,
467
+ project_id=project_id,
468
+ region_id=region_id,
469
+ l7policy_id=l7policy_id,
470
+ compare_type=compare_type,
471
+ type=type,
472
+ value=value,
473
+ invert=invert,
474
+ key=key,
475
+ tags=tags,
476
+ extra_headers=extra_headers,
477
+ extra_query=extra_query,
478
+ extra_body=extra_body,
479
+ timeout=timeout,
480
+ )
481
+ if not response.tasks:
482
+ raise ValueError("Expected at least one task to be created")
483
+ self._client.cloud.tasks.poll(
484
+ task_id=response.tasks[0],
485
+ extra_headers=extra_headers,
486
+ polling_interval_seconds=polling_interval_seconds,
487
+ )
488
+ return self.get(
489
+ l7rule_id=l7rule_id,
490
+ project_id=project_id,
491
+ region_id=region_id,
492
+ l7policy_id=l7policy_id,
493
+ extra_headers=extra_headers,
494
+ timeout=timeout,
495
+ )
496
+
334
497
 
335
498
  class AsyncRulesResource(AsyncAPIResource):
336
499
  @cached_property
@@ -637,6 +800,169 @@ class AsyncRulesResource(AsyncAPIResource):
637
800
  cast_to=TaskIDList,
638
801
  )
639
802
 
803
+ async def create_and_poll(
804
+ self,
805
+ l7policy_id: str,
806
+ *,
807
+ project_id: int | None = None,
808
+ region_id: int | None = None,
809
+ compare_type: Literal["CONTAINS", "ENDS_WITH", "EQUAL_TO", "REGEX", "STARTS_WITH"],
810
+ type: Literal[
811
+ "COOKIE",
812
+ "FILE_TYPE",
813
+ "HEADER",
814
+ "HOST_NAME",
815
+ "PATH",
816
+ "SSL_CONN_HAS_CERT",
817
+ "SSL_DN_FIELD",
818
+ "SSL_VERIFY_RESULT",
819
+ ],
820
+ value: str,
821
+ invert: bool | NotGiven = NOT_GIVEN,
822
+ key: str | NotGiven = NOT_GIVEN,
823
+ tags: List[str] | NotGiven = NOT_GIVEN,
824
+ polling_interval_seconds: int | NotGiven = NOT_GIVEN,
825
+ timeout: float | httpx.Timeout | None | NotGiven = NOT_GIVEN,
826
+ # Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
827
+ # The extra values given here take precedence over values defined on the client or passed to this method.
828
+ extra_headers: Headers | None = None,
829
+ extra_query: Query | None = None,
830
+ extra_body: Body | None = None,
831
+ ) -> LoadBalancerL7Rule:
832
+ response = await self.create(
833
+ l7policy_id=l7policy_id,
834
+ project_id=project_id,
835
+ region_id=region_id,
836
+ compare_type=compare_type,
837
+ type=type,
838
+ value=value,
839
+ invert=invert,
840
+ key=key,
841
+ tags=tags,
842
+ extra_headers=extra_headers,
843
+ extra_query=extra_query,
844
+ extra_body=extra_body,
845
+ timeout=timeout,
846
+ )
847
+ if not response.tasks or len(response.tasks) != 1:
848
+ raise ValueError(f"Expected exactly one task to be created")
849
+ task = await self._client.cloud.tasks.poll(
850
+ task_id=response.tasks[0],
851
+ extra_headers=extra_headers,
852
+ polling_interval_seconds=polling_interval_seconds,
853
+ )
854
+ if not task.created_resources or not task.created_resources.l7rules or len(task.created_resources.l7rules) != 1:
855
+ raise ValueError(f"Expected exactly one resource to be created in a task")
856
+ return await self.get(
857
+ l7rule_id=task.created_resources.l7rules[0],
858
+ project_id=project_id,
859
+ region_id=region_id,
860
+ l7policy_id=l7policy_id,
861
+ extra_headers=extra_headers,
862
+ timeout=timeout,
863
+ )
864
+
865
+ async def delete_and_poll(
866
+ self,
867
+ l7rule_id: str,
868
+ *,
869
+ project_id: int | None = None,
870
+ region_id: int | None = None,
871
+ l7policy_id: str,
872
+ polling_interval_seconds: int | NotGiven = NOT_GIVEN,
873
+ timeout: float | httpx.Timeout | None | NotGiven = NOT_GIVEN,
874
+ # Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
875
+ # The extra values given here take precedence over values defined on the client or passed to this method.
876
+ extra_headers: Headers | None = None,
877
+ extra_query: Query | None = None,
878
+ extra_body: Body | None = None,
879
+ ) -> None:
880
+ """
881
+ Delete L7 rule and poll for the result. Only the first task will be polled. If you need to poll more tasks, use the `tasks.poll` method.
882
+ """
883
+ response = await self.delete(
884
+ l7rule_id=l7rule_id,
885
+ project_id=project_id,
886
+ region_id=region_id,
887
+ l7policy_id=l7policy_id,
888
+ extra_headers=extra_headers,
889
+ extra_query=extra_query,
890
+ extra_body=extra_body,
891
+ timeout=timeout,
892
+ )
893
+ if not response.tasks:
894
+ raise ValueError("Expected at least one task to be created")
895
+ await self._client.cloud.tasks.poll(
896
+ task_id=response.tasks[0],
897
+ extra_headers=extra_headers,
898
+ polling_interval_seconds=polling_interval_seconds,
899
+ )
900
+
901
+ async def replace_and_poll(
902
+ self,
903
+ l7rule_id: str,
904
+ *,
905
+ project_id: int | None = None,
906
+ region_id: int | None = None,
907
+ l7policy_id: str,
908
+ compare_type: Literal["CONTAINS", "ENDS_WITH", "EQUAL_TO", "REGEX", "STARTS_WITH"],
909
+ type: Literal[
910
+ "COOKIE",
911
+ "FILE_TYPE",
912
+ "HEADER",
913
+ "HOST_NAME",
914
+ "PATH",
915
+ "SSL_CONN_HAS_CERT",
916
+ "SSL_DN_FIELD",
917
+ "SSL_VERIFY_RESULT",
918
+ ],
919
+ value: str,
920
+ invert: bool | NotGiven = NOT_GIVEN,
921
+ key: str | NotGiven = NOT_GIVEN,
922
+ tags: List[str] | NotGiven = NOT_GIVEN,
923
+ polling_interval_seconds: int | NotGiven = NOT_GIVEN,
924
+ timeout: float | httpx.Timeout | None | NotGiven = NOT_GIVEN,
925
+ # Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
926
+ # The extra values given here take precedence over values defined on the client or passed to this method.
927
+ extra_headers: Headers | None = None,
928
+ extra_query: Query | None = None,
929
+ extra_body: Body | None = None,
930
+ ) -> LoadBalancerL7Rule:
931
+ """
932
+ Replace L7 rule and poll for the result. Only the first task will be polled. If you need to poll more tasks, use the `tasks.poll` method.
933
+ """
934
+ response = await self.replace(
935
+ l7rule_id=l7rule_id,
936
+ project_id=project_id,
937
+ region_id=region_id,
938
+ l7policy_id=l7policy_id,
939
+ compare_type=compare_type,
940
+ type=type,
941
+ value=value,
942
+ invert=invert,
943
+ key=key,
944
+ tags=tags,
945
+ extra_headers=extra_headers,
946
+ extra_query=extra_query,
947
+ extra_body=extra_body,
948
+ timeout=timeout,
949
+ )
950
+ if not response.tasks:
951
+ raise ValueError("Expected at least one task to be created")
952
+ await self._client.cloud.tasks.poll(
953
+ task_id=response.tasks[0],
954
+ extra_headers=extra_headers,
955
+ polling_interval_seconds=polling_interval_seconds,
956
+ )
957
+ return await self.get(
958
+ l7rule_id=l7rule_id,
959
+ project_id=project_id,
960
+ region_id=region_id,
961
+ l7policy_id=l7policy_id,
962
+ extra_headers=extra_headers,
963
+ timeout=timeout,
964
+ )
965
+
640
966
 
641
967
  class RulesResourceWithRawResponse:
642
968
  def __init__(self, rules: RulesResource) -> None: