gcore 0.15.0__py3-none-any.whl → 0.17.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 (199) hide show
  1. gcore/_client.py +18 -8
  2. gcore/_version.py +1 -1
  3. gcore/resources/cdn/audit_log.py +4 -12
  4. gcore/resources/cdn/cdn.py +130 -39
  5. gcore/resources/cdn/certificates.py +16 -40
  6. gcore/resources/cdn/ip_ranges.py +4 -8
  7. gcore/resources/cdn/{logs/logs.py → logs.py} +13 -53
  8. gcore/resources/cdn/logs_uploader/configs.py +14 -42
  9. gcore/resources/cdn/logs_uploader/policies.py +14 -42
  10. gcore/resources/cdn/logs_uploader/targets.py +14 -42
  11. gcore/resources/cdn/metrics.py +2 -6
  12. gcore/resources/cdn/network_capacity.py +2 -6
  13. gcore/resources/cdn/origin_groups.py +12 -32
  14. gcore/resources/cdn/resources/resources.py +18 -46
  15. gcore/resources/cdn/resources/rules.py +12 -36
  16. gcore/resources/cdn/resources/shield.py +4 -12
  17. gcore/resources/cdn/rule_templates.py +12 -36
  18. gcore/resources/cdn/shields.py +2 -6
  19. gcore/resources/cdn/statistics.py +16 -40
  20. gcore/resources/cdn/trusted_ca_certificates.py +10 -30
  21. gcore/resources/cloud/audit_logs.py +2 -6
  22. gcore/resources/cloud/baremetal/flavors.py +2 -6
  23. gcore/resources/cloud/baremetal/images.py +2 -6
  24. gcore/resources/cloud/baremetal/servers.py +14 -18
  25. gcore/resources/cloud/billing_reservations.py +25 -208
  26. gcore/resources/cloud/cloud.py +18 -0
  27. gcore/resources/cloud/cost_reports.py +44 -62
  28. gcore/resources/cloud/file_shares/access_rules.py +6 -18
  29. gcore/resources/cloud/file_shares/file_shares.py +126 -42
  30. gcore/resources/cloud/floating_ips.py +22 -42
  31. gcore/resources/cloud/gpu_baremetal_clusters/flavors.py +2 -6
  32. gcore/resources/cloud/gpu_baremetal_clusters/gpu_baremetal_clusters.py +30 -54
  33. gcore/resources/cloud/gpu_baremetal_clusters/images.py +16 -24
  34. gcore/resources/cloud/gpu_baremetal_clusters/interfaces.py +2 -6
  35. gcore/resources/cloud/gpu_baremetal_clusters/servers.py +18 -42
  36. gcore/resources/cloud/inference/api_keys.py +10 -30
  37. gcore/resources/cloud/inference/applications/deployments.py +135 -155
  38. gcore/resources/cloud/inference/applications/templates.py +4 -12
  39. gcore/resources/cloud/inference/deployments/deployments.py +28 -48
  40. gcore/resources/cloud/inference/deployments/logs.py +2 -6
  41. gcore/resources/cloud/inference/flavors.py +4 -12
  42. gcore/resources/cloud/inference/inference.py +2 -6
  43. gcore/resources/cloud/inference/registry_credentials.py +10 -30
  44. gcore/resources/cloud/inference/secrets.py +10 -30
  45. gcore/resources/cloud/instances/flavors.py +2 -6
  46. gcore/resources/cloud/instances/images.py +24 -36
  47. gcore/resources/cloud/instances/instances.py +119 -94
  48. gcore/resources/cloud/instances/interfaces.py +18 -18
  49. gcore/resources/cloud/instances/metrics.py +2 -6
  50. gcore/resources/cloud/ip_ranges.py +2 -6
  51. gcore/resources/cloud/k8s/clusters/clusters.py +18 -54
  52. gcore/resources/cloud/k8s/clusters/nodes.py +4 -12
  53. gcore/resources/cloud/k8s/clusters/pools/nodes.py +4 -12
  54. gcore/resources/cloud/k8s/clusters/pools/pools.py +12 -36
  55. gcore/resources/cloud/k8s/flavors.py +2 -6
  56. gcore/resources/cloud/k8s/k8s.py +2 -6
  57. gcore/resources/cloud/load_balancers/flavors.py +2 -6
  58. gcore/resources/cloud/load_balancers/l7_policies/l7_policies.py +22 -30
  59. gcore/resources/cloud/load_balancers/l7_policies/rules.py +22 -30
  60. gcore/resources/cloud/load_balancers/listeners.py +38 -46
  61. gcore/resources/cloud/load_balancers/load_balancers.py +509 -521
  62. gcore/resources/cloud/load_balancers/metrics.py +8 -12
  63. gcore/resources/cloud/load_balancers/pools/health_monitors.py +4 -12
  64. gcore/resources/cloud/load_balancers/pools/members.py +4 -12
  65. gcore/resources/cloud/load_balancers/pools/pools.py +38 -46
  66. gcore/resources/cloud/load_balancers/statuses.py +10 -18
  67. gcore/resources/cloud/networks/networks.py +18 -30
  68. gcore/resources/cloud/networks/routers.py +14 -42
  69. gcore/resources/cloud/networks/subnets.py +14 -30
  70. gcore/resources/cloud/placement_groups.py +16 -24
  71. gcore/resources/cloud/projects.py +117 -129
  72. gcore/resources/cloud/quotas/quotas.py +6 -18
  73. gcore/resources/cloud/quotas/requests.py +8 -24
  74. gcore/resources/cloud/regions.py +4 -8
  75. gcore/resources/cloud/registries/artifacts.py +4 -12
  76. gcore/resources/cloud/registries/registries.py +10 -30
  77. gcore/resources/cloud/registries/repositories.py +4 -12
  78. gcore/resources/cloud/registries/tags.py +2 -6
  79. gcore/resources/cloud/registries/users.py +12 -36
  80. gcore/resources/cloud/reserved_fixed_ips/reserved_fixed_ips.py +28 -30
  81. gcore/resources/cloud/reserved_fixed_ips/vip.py +10 -30
  82. gcore/resources/cloud/secrets.py +12 -24
  83. gcore/resources/cloud/security_groups/rules.py +6 -18
  84. gcore/resources/cloud/security_groups/security_groups.py +14 -42
  85. gcore/resources/cloud/ssh_keys.py +10 -30
  86. gcore/resources/cloud/tasks.py +36 -33
  87. gcore/resources/cloud/usage_reports.py +18 -24
  88. gcore/resources/cloud/users/role_assignments.py +8 -24
  89. gcore/resources/cloud/volumes.py +47 -61
  90. gcore/resources/dns/dns.py +4 -8
  91. gcore/resources/dns/locations.py +8 -20
  92. gcore/resources/dns/metrics.py +2 -6
  93. gcore/resources/dns/pickers/pickers.py +2 -2
  94. gcore/resources/dns/pickers/presets.py +2 -6
  95. gcore/resources/dns/zones/dnssec.py +4 -12
  96. gcore/resources/dns/zones/rrsets.py +12 -36
  97. gcore/resources/dns/zones/zones.py +22 -58
  98. gcore/resources/fastedge/apps/apps.py +12 -28
  99. gcore/resources/fastedge/apps/logs.py +2 -6
  100. gcore/resources/fastedge/binaries.py +8 -24
  101. gcore/resources/fastedge/fastedge.py +2 -2
  102. gcore/resources/fastedge/kv_stores.py +10 -22
  103. gcore/resources/fastedge/secrets.py +12 -36
  104. gcore/resources/fastedge/statistics.py +4 -12
  105. gcore/resources/fastedge/templates.py +10 -30
  106. gcore/resources/iam/api_tokens.py +8 -24
  107. gcore/resources/iam/iam.py +2 -2
  108. gcore/resources/iam/users.py +10 -26
  109. gcore/resources/security/bgp_announces.py +4 -12
  110. gcore/resources/security/events.py +2 -6
  111. gcore/resources/security/profile_templates.py +2 -6
  112. gcore/resources/security/profiles.py +16 -40
  113. gcore/resources/storage/buckets/buckets.py +6 -18
  114. gcore/resources/storage/buckets/cors.py +4 -12
  115. gcore/resources/storage/buckets/lifecycle.py +4 -12
  116. gcore/resources/storage/buckets/policy.py +6 -18
  117. gcore/resources/storage/credentials.py +2 -6
  118. gcore/resources/storage/locations.py +2 -6
  119. gcore/resources/storage/statistics.py +4 -12
  120. gcore/resources/storage/storage.py +16 -48
  121. gcore/resources/streaming/ai_tasks.py +10 -18
  122. gcore/resources/streaming/broadcasts.py +12 -36
  123. gcore/resources/streaming/directories.py +10 -30
  124. gcore/resources/streaming/players.py +12 -28
  125. gcore/resources/streaming/playlists.py +12 -36
  126. gcore/resources/streaming/quality_sets.py +4 -12
  127. gcore/resources/streaming/restreams.py +10 -30
  128. gcore/resources/streaming/statistics.py +46 -138
  129. gcore/resources/streaming/streams/overlays.py +12 -36
  130. gcore/resources/streaming/streams/streams.py +20 -52
  131. gcore/resources/streaming/videos/subtitles.py +10 -30
  132. gcore/resources/streaming/videos/videos.py +16 -40
  133. gcore/resources/waap/advanced_rules.py +2 -6
  134. gcore/resources/waap/custom_page_sets.py +12 -36
  135. gcore/resources/waap/domains/advanced_rules.py +12 -36
  136. gcore/resources/waap/domains/api_discovery.py +12 -36
  137. gcore/resources/waap/domains/api_path_groups.py +2 -6
  138. gcore/resources/waap/domains/api_paths.py +10 -30
  139. gcore/resources/waap/domains/custom_rules.py +14 -42
  140. gcore/resources/waap/domains/domains.py +12 -32
  141. gcore/resources/waap/domains/firewall_rules.py +14 -42
  142. gcore/resources/waap/domains/insight_silences.py +10 -30
  143. gcore/resources/waap/domains/insights.py +6 -18
  144. gcore/resources/waap/domains/settings.py +4 -12
  145. gcore/resources/waap/domains/statistics.py +12 -36
  146. gcore/resources/waap/insights.py +2 -6
  147. gcore/resources/waap/ip_info/ip_info.py +16 -48
  148. gcore/resources/waap/ip_info/metrics.py +2 -6
  149. gcore/resources/waap/organizations.py +2 -6
  150. gcore/resources/waap/statistics.py +2 -6
  151. gcore/resources/waap/tags.py +2 -2
  152. gcore/resources/waap/waap.py +2 -2
  153. gcore/types/cdn/__init__.py +3 -0
  154. gcore/types/cdn/alibaba_regions.py +22 -0
  155. gcore/types/cdn/aws_regions.py +22 -0
  156. gcore/types/cdn/cdn_list_purge_statuses_response.py +10 -0
  157. gcore/types/cdn/cdn_resource.py +1 -1
  158. gcore/types/cdn/logs_aggregated_stats.py +1 -1
  159. gcore/types/cdn/resource_create_params.py +1 -1
  160. gcore/types/cdn/resource_replace_params.py +1 -1
  161. gcore/types/cdn/resource_update_params.py +1 -1
  162. gcore/types/cdn/resources/cdn_resource_rule.py +1 -1
  163. gcore/types/cdn/resources/rule_create_params.py +1 -1
  164. gcore/types/cdn/resources/rule_replace_params.py +1 -1
  165. gcore/types/cdn/resources/rule_update_params.py +1 -1
  166. gcore/types/cdn/rule_template.py +1 -1
  167. gcore/types/cdn/rule_template_create_params.py +1 -1
  168. gcore/types/cdn/rule_template_replace_params.py +1 -1
  169. gcore/types/cdn/rule_template_update_params.py +1 -1
  170. gcore/types/cloud/__init__.py +2 -1
  171. gcore/types/cloud/billing_reservation.py +52 -114
  172. gcore/types/cloud/billing_reservation_list_params.py +4 -42
  173. gcore/types/cloud/billing_reservations.py +16 -0
  174. gcore/types/cloud/cost_report_get_aggregated_params.py +2 -2
  175. gcore/types/cloud/cost_report_get_detailed_params.py +2 -2
  176. gcore/types/cloud/inference/applications/__init__.py +1 -1
  177. gcore/types/cloud/inference/applications/{deployment_patch_params.py → deployment_update_params.py} +2 -2
  178. gcore/types/cloud/instance_list_params.py +1 -1
  179. gcore/types/cloud/instance_update_params.py +31 -3
  180. gcore/types/cloud/load_balancer_create_params.py +1 -1
  181. gcore/types/cloud/load_balancer_listener_detail.py +1 -1
  182. gcore/types/cloud/load_balancers/listener_create_params.py +1 -1
  183. gcore/types/cloud/load_balancers/listener_list_params.py +1 -1
  184. gcore/types/cloud/load_balancers/pool_create_params.py +1 -1
  185. gcore/types/cloud/load_balancers/pool_list_params.py +1 -1
  186. gcore/types/cloud/{project_replace_params.py → project_update_params.py} +2 -2
  187. gcore/types/cloud/task_list_params.py +3 -3
  188. gcore/types/cloud/usage_report_get_params.py +2 -2
  189. gcore/types/security/profile_create_params.py +2 -2
  190. {gcore-0.15.0.dist-info → gcore-0.17.0.dist-info}/METADATA +2 -2
  191. {gcore-0.15.0.dist-info → gcore-0.17.0.dist-info}/RECORD +193 -195
  192. gcore/resources/cdn/logs/__init__.py +0 -33
  193. gcore/resources/cdn/logs/settings.py +0 -1081
  194. gcore/types/cdn/logs/__init__.py +0 -7
  195. gcore/types/cdn/logs/log_settings.py +0 -172
  196. gcore/types/cdn/logs/setting_create_params.py +0 -200
  197. gcore/types/cdn/logs/setting_update_params.py +0 -200
  198. {gcore-0.15.0.dist-info → gcore-0.17.0.dist-info}/WHEEL +0 -0
  199. {gcore-0.15.0.dist-info → gcore-0.17.0.dist-info}/licenses/LICENSE +0 -0
@@ -120,9 +120,7 @@ class NetworksResource(SyncAPIResource):
120
120
  if region_id is None:
121
121
  region_id = self._client._get_cloud_region_id_path_param()
122
122
  return self._post(
123
- f"/cloud/v1/networks/{project_id}/{region_id}"
124
- if self._client._base_url_overridden
125
- else f"https://api.gcore.com//cloud/v1/networks/{project_id}/{region_id}",
123
+ f"/cloud/v1/networks/{project_id}/{region_id}",
126
124
  body=maybe_transform(
127
125
  {
128
126
  "name": name,
@@ -148,6 +146,7 @@ class NetworksResource(SyncAPIResource):
148
146
  tags: Dict[str, str] | Omit = omit,
149
147
  type: Literal["vlan", "vxlan"] | Omit = omit,
150
148
  polling_interval_seconds: int | Omit = omit,
149
+ polling_timeout_seconds: int | Omit = omit,
151
150
  # Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
152
151
  # The extra values given here take precedence over values defined on the client or passed to this method.
153
152
  extra_headers: Headers | None = None,
@@ -174,6 +173,7 @@ class NetworksResource(SyncAPIResource):
174
173
  task_id=response.tasks[0],
175
174
  extra_headers=extra_headers,
176
175
  polling_interval_seconds=polling_interval_seconds,
176
+ polling_timeout_seconds=polling_timeout_seconds,
177
177
  )
178
178
  if (
179
179
  not task.created_resources
@@ -255,9 +255,7 @@ class NetworksResource(SyncAPIResource):
255
255
  if not network_id:
256
256
  raise ValueError(f"Expected a non-empty value for `network_id` but received {network_id!r}")
257
257
  return self._patch(
258
- f"/cloud/v1/networks/{project_id}/{region_id}/{network_id}"
259
- if self._client._base_url_overridden
260
- else f"https://api.gcore.com//cloud/v1/networks/{project_id}/{region_id}/{network_id}",
258
+ f"/cloud/v1/networks/{project_id}/{region_id}/{network_id}",
261
259
  body=maybe_transform(
262
260
  {
263
261
  "name": name,
@@ -324,9 +322,7 @@ class NetworksResource(SyncAPIResource):
324
322
  if region_id is None:
325
323
  region_id = self._client._get_cloud_region_id_path_param()
326
324
  return self._get_api_list(
327
- f"/cloud/v1/networks/{project_id}/{region_id}"
328
- if self._client._base_url_overridden
329
- else f"https://api.gcore.com//cloud/v1/networks/{project_id}/{region_id}",
325
+ f"/cloud/v1/networks/{project_id}/{region_id}",
330
326
  page=SyncOffsetPage[Network],
331
327
  options=make_request_options(
332
328
  extra_headers=extra_headers,
@@ -386,9 +382,7 @@ class NetworksResource(SyncAPIResource):
386
382
  if not network_id:
387
383
  raise ValueError(f"Expected a non-empty value for `network_id` but received {network_id!r}")
388
384
  return self._delete(
389
- f"/cloud/v1/networks/{project_id}/{region_id}/{network_id}"
390
- if self._client._base_url_overridden
391
- else f"https://api.gcore.com//cloud/v1/networks/{project_id}/{region_id}/{network_id}",
385
+ f"/cloud/v1/networks/{project_id}/{region_id}/{network_id}",
392
386
  options=make_request_options(
393
387
  extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout
394
388
  ),
@@ -402,6 +396,7 @@ class NetworksResource(SyncAPIResource):
402
396
  project_id: int | None = None,
403
397
  region_id: int | None = None,
404
398
  polling_interval_seconds: int | Omit = omit,
399
+ polling_timeout_seconds: int | Omit = omit,
405
400
  # Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
406
401
  # The extra values given here take precedence over values defined on the client or passed to this method.
407
402
  extra_headers: Headers | None = None,
@@ -425,6 +420,7 @@ class NetworksResource(SyncAPIResource):
425
420
  task_id=response.tasks[0],
426
421
  extra_headers=extra_headers,
427
422
  polling_interval_seconds=polling_interval_seconds,
423
+ polling_timeout_seconds=polling_timeout_seconds,
428
424
  )
429
425
 
430
426
  def get(
@@ -465,9 +461,7 @@ class NetworksResource(SyncAPIResource):
465
461
  if not network_id:
466
462
  raise ValueError(f"Expected a non-empty value for `network_id` but received {network_id!r}")
467
463
  return self._get(
468
- f"/cloud/v1/networks/{project_id}/{region_id}/{network_id}"
469
- if self._client._base_url_overridden
470
- else f"https://api.gcore.com//cloud/v1/networks/{project_id}/{region_id}/{network_id}",
464
+ f"/cloud/v1/networks/{project_id}/{region_id}/{network_id}",
471
465
  options=make_request_options(
472
466
  extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout
473
467
  ),
@@ -552,9 +546,7 @@ class AsyncNetworksResource(AsyncAPIResource):
552
546
  if region_id is None:
553
547
  region_id = self._client._get_cloud_region_id_path_param()
554
548
  return await self._post(
555
- f"/cloud/v1/networks/{project_id}/{region_id}"
556
- if self._client._base_url_overridden
557
- else f"https://api.gcore.com//cloud/v1/networks/{project_id}/{region_id}",
549
+ f"/cloud/v1/networks/{project_id}/{region_id}",
558
550
  body=await async_maybe_transform(
559
551
  {
560
552
  "name": name,
@@ -580,6 +572,7 @@ class AsyncNetworksResource(AsyncAPIResource):
580
572
  tags: Dict[str, str] | Omit = omit,
581
573
  type: Literal["vlan", "vxlan"] | Omit = omit,
582
574
  polling_interval_seconds: int | Omit = omit,
575
+ polling_timeout_seconds: int | Omit = omit,
583
576
  # Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
584
577
  # The extra values given here take precedence over values defined on the client or passed to this method.
585
578
  extra_headers: Headers | None = None,
@@ -606,6 +599,7 @@ class AsyncNetworksResource(AsyncAPIResource):
606
599
  task_id=response.tasks[0],
607
600
  extra_headers=extra_headers,
608
601
  polling_interval_seconds=polling_interval_seconds,
602
+ polling_timeout_seconds=polling_timeout_seconds,
609
603
  )
610
604
  if (
611
605
  not task.created_resources
@@ -687,9 +681,7 @@ class AsyncNetworksResource(AsyncAPIResource):
687
681
  if not network_id:
688
682
  raise ValueError(f"Expected a non-empty value for `network_id` but received {network_id!r}")
689
683
  return await self._patch(
690
- f"/cloud/v1/networks/{project_id}/{region_id}/{network_id}"
691
- if self._client._base_url_overridden
692
- else f"https://api.gcore.com//cloud/v1/networks/{project_id}/{region_id}/{network_id}",
684
+ f"/cloud/v1/networks/{project_id}/{region_id}/{network_id}",
693
685
  body=await async_maybe_transform(
694
686
  {
695
687
  "name": name,
@@ -756,9 +748,7 @@ class AsyncNetworksResource(AsyncAPIResource):
756
748
  if region_id is None:
757
749
  region_id = self._client._get_cloud_region_id_path_param()
758
750
  return self._get_api_list(
759
- f"/cloud/v1/networks/{project_id}/{region_id}"
760
- if self._client._base_url_overridden
761
- else f"https://api.gcore.com//cloud/v1/networks/{project_id}/{region_id}",
751
+ f"/cloud/v1/networks/{project_id}/{region_id}",
762
752
  page=AsyncOffsetPage[Network],
763
753
  options=make_request_options(
764
754
  extra_headers=extra_headers,
@@ -818,9 +808,7 @@ class AsyncNetworksResource(AsyncAPIResource):
818
808
  if not network_id:
819
809
  raise ValueError(f"Expected a non-empty value for `network_id` but received {network_id!r}")
820
810
  return await self._delete(
821
- f"/cloud/v1/networks/{project_id}/{region_id}/{network_id}"
822
- if self._client._base_url_overridden
823
- else f"https://api.gcore.com//cloud/v1/networks/{project_id}/{region_id}/{network_id}",
811
+ f"/cloud/v1/networks/{project_id}/{region_id}/{network_id}",
824
812
  options=make_request_options(
825
813
  extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout
826
814
  ),
@@ -834,6 +822,7 @@ class AsyncNetworksResource(AsyncAPIResource):
834
822
  project_id: int | None = None,
835
823
  region_id: int | None = None,
836
824
  polling_interval_seconds: int | Omit = omit,
825
+ polling_timeout_seconds: int | Omit = omit,
837
826
  # Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
838
827
  # The extra values given here take precedence over values defined on the client or passed to this method.
839
828
  extra_headers: Headers | None = None,
@@ -857,6 +846,7 @@ class AsyncNetworksResource(AsyncAPIResource):
857
846
  task_id=response.tasks[0],
858
847
  extra_headers=extra_headers,
859
848
  polling_interval_seconds=polling_interval_seconds,
849
+ polling_timeout_seconds=polling_timeout_seconds,
860
850
  )
861
851
 
862
852
  async def get(
@@ -897,9 +887,7 @@ class AsyncNetworksResource(AsyncAPIResource):
897
887
  if not network_id:
898
888
  raise ValueError(f"Expected a non-empty value for `network_id` but received {network_id!r}")
899
889
  return await self._get(
900
- f"/cloud/v1/networks/{project_id}/{region_id}/{network_id}"
901
- if self._client._base_url_overridden
902
- else f"https://api.gcore.com//cloud/v1/networks/{project_id}/{region_id}/{network_id}",
890
+ f"/cloud/v1/networks/{project_id}/{region_id}/{network_id}",
903
891
  options=make_request_options(
904
892
  extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout
905
893
  ),
@@ -92,9 +92,7 @@ class RoutersResource(SyncAPIResource):
92
92
  if region_id is None:
93
93
  region_id = self._client._get_cloud_region_id_path_param()
94
94
  return self._post(
95
- f"/cloud/v1/routers/{project_id}/{region_id}"
96
- if self._client._base_url_overridden
97
- else f"https://api.gcore.com//cloud/v1/routers/{project_id}/{region_id}",
95
+ f"/cloud/v1/routers/{project_id}/{region_id}",
98
96
  body=maybe_transform(
99
97
  {
100
98
  "name": name,
@@ -151,9 +149,7 @@ class RoutersResource(SyncAPIResource):
151
149
  if not router_id:
152
150
  raise ValueError(f"Expected a non-empty value for `router_id` but received {router_id!r}")
153
151
  return self._patch(
154
- f"/cloud/v1/routers/{project_id}/{region_id}/{router_id}"
155
- if self._client._base_url_overridden
156
- else f"https://api.gcore.com//cloud/v1/routers/{project_id}/{region_id}/{router_id}",
152
+ f"/cloud/v1/routers/{project_id}/{region_id}/{router_id}",
157
153
  body=maybe_transform(
158
154
  {
159
155
  "external_gateway_info": external_gateway_info,
@@ -203,9 +199,7 @@ class RoutersResource(SyncAPIResource):
203
199
  if region_id is None:
204
200
  region_id = self._client._get_cloud_region_id_path_param()
205
201
  return self._get_api_list(
206
- f"/cloud/v1/routers/{project_id}/{region_id}"
207
- if self._client._base_url_overridden
208
- else f"https://api.gcore.com//cloud/v1/routers/{project_id}/{region_id}",
202
+ f"/cloud/v1/routers/{project_id}/{region_id}",
209
203
  page=SyncOffsetPage[Router],
210
204
  options=make_request_options(
211
205
  extra_headers=extra_headers,
@@ -255,9 +249,7 @@ class RoutersResource(SyncAPIResource):
255
249
  if not router_id:
256
250
  raise ValueError(f"Expected a non-empty value for `router_id` but received {router_id!r}")
257
251
  return self._delete(
258
- f"/cloud/v1/routers/{project_id}/{region_id}/{router_id}"
259
- if self._client._base_url_overridden
260
- else f"https://api.gcore.com//cloud/v1/routers/{project_id}/{region_id}/{router_id}",
252
+ f"/cloud/v1/routers/{project_id}/{region_id}/{router_id}",
261
253
  options=make_request_options(
262
254
  extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout
263
255
  ),
@@ -309,9 +301,7 @@ class RoutersResource(SyncAPIResource):
309
301
  if not router_id:
310
302
  raise ValueError(f"Expected a non-empty value for `router_id` but received {router_id!r}")
311
303
  return self._post(
312
- f"/cloud/v1/routers/{project_id}/{region_id}/{router_id}/attach"
313
- if self._client._base_url_overridden
314
- else f"https://api.gcore.com//cloud/v1/routers/{project_id}/{region_id}/{router_id}/attach",
304
+ f"/cloud/v1/routers/{project_id}/{region_id}/{router_id}/attach",
315
305
  body=maybe_transform(
316
306
  {
317
307
  "subnet_id": subnet_id,
@@ -360,9 +350,7 @@ class RoutersResource(SyncAPIResource):
360
350
  if not router_id:
361
351
  raise ValueError(f"Expected a non-empty value for `router_id` but received {router_id!r}")
362
352
  return self._post(
363
- f"/cloud/v1/routers/{project_id}/{region_id}/{router_id}/detach"
364
- if self._client._base_url_overridden
365
- else f"https://api.gcore.com//cloud/v1/routers/{project_id}/{region_id}/{router_id}/detach",
353
+ f"/cloud/v1/routers/{project_id}/{region_id}/{router_id}/detach",
366
354
  body=maybe_transform({"subnet_id": subnet_id}, router_detach_subnet_params.RouterDetachSubnetParams),
367
355
  options=make_request_options(
368
356
  extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout
@@ -402,9 +390,7 @@ class RoutersResource(SyncAPIResource):
402
390
  if not router_id:
403
391
  raise ValueError(f"Expected a non-empty value for `router_id` but received {router_id!r}")
404
392
  return self._get(
405
- f"/cloud/v1/routers/{project_id}/{region_id}/{router_id}"
406
- if self._client._base_url_overridden
407
- else f"https://api.gcore.com//cloud/v1/routers/{project_id}/{region_id}/{router_id}",
393
+ f"/cloud/v1/routers/{project_id}/{region_id}/{router_id}",
408
394
  options=make_request_options(
409
395
  extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout
410
396
  ),
@@ -473,9 +459,7 @@ class AsyncRoutersResource(AsyncAPIResource):
473
459
  if region_id is None:
474
460
  region_id = self._client._get_cloud_region_id_path_param()
475
461
  return await self._post(
476
- f"/cloud/v1/routers/{project_id}/{region_id}"
477
- if self._client._base_url_overridden
478
- else f"https://api.gcore.com//cloud/v1/routers/{project_id}/{region_id}",
462
+ f"/cloud/v1/routers/{project_id}/{region_id}",
479
463
  body=await async_maybe_transform(
480
464
  {
481
465
  "name": name,
@@ -532,9 +516,7 @@ class AsyncRoutersResource(AsyncAPIResource):
532
516
  if not router_id:
533
517
  raise ValueError(f"Expected a non-empty value for `router_id` but received {router_id!r}")
534
518
  return await self._patch(
535
- f"/cloud/v1/routers/{project_id}/{region_id}/{router_id}"
536
- if self._client._base_url_overridden
537
- else f"https://api.gcore.com//cloud/v1/routers/{project_id}/{region_id}/{router_id}",
519
+ f"/cloud/v1/routers/{project_id}/{region_id}/{router_id}",
538
520
  body=await async_maybe_transform(
539
521
  {
540
522
  "external_gateway_info": external_gateway_info,
@@ -584,9 +566,7 @@ class AsyncRoutersResource(AsyncAPIResource):
584
566
  if region_id is None:
585
567
  region_id = self._client._get_cloud_region_id_path_param()
586
568
  return self._get_api_list(
587
- f"/cloud/v1/routers/{project_id}/{region_id}"
588
- if self._client._base_url_overridden
589
- else f"https://api.gcore.com//cloud/v1/routers/{project_id}/{region_id}",
569
+ f"/cloud/v1/routers/{project_id}/{region_id}",
590
570
  page=AsyncOffsetPage[Router],
591
571
  options=make_request_options(
592
572
  extra_headers=extra_headers,
@@ -636,9 +616,7 @@ class AsyncRoutersResource(AsyncAPIResource):
636
616
  if not router_id:
637
617
  raise ValueError(f"Expected a non-empty value for `router_id` but received {router_id!r}")
638
618
  return await self._delete(
639
- f"/cloud/v1/routers/{project_id}/{region_id}/{router_id}"
640
- if self._client._base_url_overridden
641
- else f"https://api.gcore.com//cloud/v1/routers/{project_id}/{region_id}/{router_id}",
619
+ f"/cloud/v1/routers/{project_id}/{region_id}/{router_id}",
642
620
  options=make_request_options(
643
621
  extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout
644
622
  ),
@@ -690,9 +668,7 @@ class AsyncRoutersResource(AsyncAPIResource):
690
668
  if not router_id:
691
669
  raise ValueError(f"Expected a non-empty value for `router_id` but received {router_id!r}")
692
670
  return await self._post(
693
- f"/cloud/v1/routers/{project_id}/{region_id}/{router_id}/attach"
694
- if self._client._base_url_overridden
695
- else f"https://api.gcore.com//cloud/v1/routers/{project_id}/{region_id}/{router_id}/attach",
671
+ f"/cloud/v1/routers/{project_id}/{region_id}/{router_id}/attach",
696
672
  body=await async_maybe_transform(
697
673
  {
698
674
  "subnet_id": subnet_id,
@@ -741,9 +717,7 @@ class AsyncRoutersResource(AsyncAPIResource):
741
717
  if not router_id:
742
718
  raise ValueError(f"Expected a non-empty value for `router_id` but received {router_id!r}")
743
719
  return await self._post(
744
- f"/cloud/v1/routers/{project_id}/{region_id}/{router_id}/detach"
745
- if self._client._base_url_overridden
746
- else f"https://api.gcore.com//cloud/v1/routers/{project_id}/{region_id}/{router_id}/detach",
720
+ f"/cloud/v1/routers/{project_id}/{region_id}/{router_id}/detach",
747
721
  body=await async_maybe_transform(
748
722
  {"subnet_id": subnet_id}, router_detach_subnet_params.RouterDetachSubnetParams
749
723
  ),
@@ -785,9 +759,7 @@ class AsyncRoutersResource(AsyncAPIResource):
785
759
  if not router_id:
786
760
  raise ValueError(f"Expected a non-empty value for `router_id` but received {router_id!r}")
787
761
  return await self._get(
788
- f"/cloud/v1/routers/{project_id}/{region_id}/{router_id}"
789
- if self._client._base_url_overridden
790
- else f"https://api.gcore.com//cloud/v1/routers/{project_id}/{region_id}/{router_id}",
762
+ f"/cloud/v1/routers/{project_id}/{region_id}/{router_id}",
791
763
  options=make_request_options(
792
764
  extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout
793
765
  ),
@@ -125,9 +125,7 @@ class SubnetsResource(SyncAPIResource):
125
125
  if region_id is None:
126
126
  region_id = self._client._get_cloud_region_id_path_param()
127
127
  return self._post(
128
- f"/cloud/v1/subnets/{project_id}/{region_id}"
129
- if self._client._base_url_overridden
130
- else f"https://api.gcore.com//cloud/v1/subnets/{project_id}/{region_id}",
128
+ f"/cloud/v1/subnets/{project_id}/{region_id}",
131
129
  body=maybe_transform(
132
130
  {
133
131
  "cidr": cidr,
@@ -167,6 +165,7 @@ class SubnetsResource(SyncAPIResource):
167
165
  router_id_to_connect: Optional[str] | Omit = omit,
168
166
  tags: Dict[str, str] | Omit = omit,
169
167
  polling_interval_seconds: int | Omit = omit,
168
+ polling_timeout_seconds: int | Omit = omit,
170
169
  # Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
171
170
  # The extra values given here take precedence over values defined on the client or passed to this method.
172
171
  extra_headers: Headers | None = None,
@@ -200,6 +199,7 @@ class SubnetsResource(SyncAPIResource):
200
199
  task_id=response.tasks[0],
201
200
  extra_headers=extra_headers,
202
201
  polling_interval_seconds=polling_interval_seconds,
202
+ polling_timeout_seconds=polling_timeout_seconds,
203
203
  )
204
204
  if not task.created_resources or not task.created_resources.subnets or len(task.created_resources.subnets) != 1:
205
205
  raise ValueError(f"Expected exactly one resource to be created in a task")
@@ -289,9 +289,7 @@ class SubnetsResource(SyncAPIResource):
289
289
  if not subnet_id:
290
290
  raise ValueError(f"Expected a non-empty value for `subnet_id` but received {subnet_id!r}")
291
291
  return self._patch(
292
- f"/cloud/v1/subnets/{project_id}/{region_id}/{subnet_id}"
293
- if self._client._base_url_overridden
294
- else f"https://api.gcore.com//cloud/v1/subnets/{project_id}/{region_id}/{subnet_id}",
292
+ f"/cloud/v1/subnets/{project_id}/{region_id}/{subnet_id}",
295
293
  body=maybe_transform(
296
294
  {
297
295
  "dns_nameservers": dns_nameservers,
@@ -377,9 +375,7 @@ class SubnetsResource(SyncAPIResource):
377
375
  if region_id is None:
378
376
  region_id = self._client._get_cloud_region_id_path_param()
379
377
  return self._get_api_list(
380
- f"/cloud/v1/subnets/{project_id}/{region_id}"
381
- if self._client._base_url_overridden
382
- else f"https://api.gcore.com//cloud/v1/subnets/{project_id}/{region_id}",
378
+ f"/cloud/v1/subnets/{project_id}/{region_id}",
383
379
  page=SyncOffsetPage[Subnet],
384
380
  options=make_request_options(
385
381
  extra_headers=extra_headers,
@@ -439,9 +435,7 @@ class SubnetsResource(SyncAPIResource):
439
435
  if not subnet_id:
440
436
  raise ValueError(f"Expected a non-empty value for `subnet_id` but received {subnet_id!r}")
441
437
  return self._delete(
442
- f"/cloud/v1/subnets/{project_id}/{region_id}/{subnet_id}"
443
- if self._client._base_url_overridden
444
- else f"https://api.gcore.com//cloud/v1/subnets/{project_id}/{region_id}/{subnet_id}",
438
+ f"/cloud/v1/subnets/{project_id}/{region_id}/{subnet_id}",
445
439
  options=make_request_options(
446
440
  extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout
447
441
  ),
@@ -486,9 +480,7 @@ class SubnetsResource(SyncAPIResource):
486
480
  if not subnet_id:
487
481
  raise ValueError(f"Expected a non-empty value for `subnet_id` but received {subnet_id!r}")
488
482
  return self._get(
489
- f"/cloud/v1/subnets/{project_id}/{region_id}/{subnet_id}"
490
- if self._client._base_url_overridden
491
- else f"https://api.gcore.com//cloud/v1/subnets/{project_id}/{region_id}/{subnet_id}",
483
+ f"/cloud/v1/subnets/{project_id}/{region_id}/{subnet_id}",
492
484
  options=make_request_options(
493
485
  extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout
494
486
  ),
@@ -592,9 +584,7 @@ class AsyncSubnetsResource(AsyncAPIResource):
592
584
  if region_id is None:
593
585
  region_id = self._client._get_cloud_region_id_path_param()
594
586
  return await self._post(
595
- f"/cloud/v1/subnets/{project_id}/{region_id}"
596
- if self._client._base_url_overridden
597
- else f"https://api.gcore.com//cloud/v1/subnets/{project_id}/{region_id}",
587
+ f"/cloud/v1/subnets/{project_id}/{region_id}",
598
588
  body=await async_maybe_transform(
599
589
  {
600
590
  "cidr": cidr,
@@ -634,6 +624,7 @@ class AsyncSubnetsResource(AsyncAPIResource):
634
624
  router_id_to_connect: Optional[str] | Omit = omit,
635
625
  tags: Dict[str, str] | Omit = omit,
636
626
  polling_interval_seconds: int | Omit = omit,
627
+ polling_timeout_seconds: int | Omit = omit,
637
628
  # Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
638
629
  # The extra values given here take precedence over values defined on the client or passed to this method.
639
630
  extra_headers: Headers | None = None,
@@ -667,6 +658,7 @@ class AsyncSubnetsResource(AsyncAPIResource):
667
658
  task_id=response.tasks[0],
668
659
  extra_headers=extra_headers,
669
660
  polling_interval_seconds=polling_interval_seconds,
661
+ polling_timeout_seconds=polling_timeout_seconds,
670
662
  )
671
663
  if not task.created_resources or not task.created_resources.subnets or len(task.created_resources.subnets) != 1:
672
664
  raise ValueError(f"Expected exactly one resource to be created in a task")
@@ -756,9 +748,7 @@ class AsyncSubnetsResource(AsyncAPIResource):
756
748
  if not subnet_id:
757
749
  raise ValueError(f"Expected a non-empty value for `subnet_id` but received {subnet_id!r}")
758
750
  return await self._patch(
759
- f"/cloud/v1/subnets/{project_id}/{region_id}/{subnet_id}"
760
- if self._client._base_url_overridden
761
- else f"https://api.gcore.com//cloud/v1/subnets/{project_id}/{region_id}/{subnet_id}",
751
+ f"/cloud/v1/subnets/{project_id}/{region_id}/{subnet_id}",
762
752
  body=await async_maybe_transform(
763
753
  {
764
754
  "dns_nameservers": dns_nameservers,
@@ -844,9 +834,7 @@ class AsyncSubnetsResource(AsyncAPIResource):
844
834
  if region_id is None:
845
835
  region_id = self._client._get_cloud_region_id_path_param()
846
836
  return self._get_api_list(
847
- f"/cloud/v1/subnets/{project_id}/{region_id}"
848
- if self._client._base_url_overridden
849
- else f"https://api.gcore.com//cloud/v1/subnets/{project_id}/{region_id}",
837
+ f"/cloud/v1/subnets/{project_id}/{region_id}",
850
838
  page=AsyncOffsetPage[Subnet],
851
839
  options=make_request_options(
852
840
  extra_headers=extra_headers,
@@ -906,9 +894,7 @@ class AsyncSubnetsResource(AsyncAPIResource):
906
894
  if not subnet_id:
907
895
  raise ValueError(f"Expected a non-empty value for `subnet_id` but received {subnet_id!r}")
908
896
  return await self._delete(
909
- f"/cloud/v1/subnets/{project_id}/{region_id}/{subnet_id}"
910
- if self._client._base_url_overridden
911
- else f"https://api.gcore.com//cloud/v1/subnets/{project_id}/{region_id}/{subnet_id}",
897
+ f"/cloud/v1/subnets/{project_id}/{region_id}/{subnet_id}",
912
898
  options=make_request_options(
913
899
  extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout
914
900
  ),
@@ -953,9 +939,7 @@ class AsyncSubnetsResource(AsyncAPIResource):
953
939
  if not subnet_id:
954
940
  raise ValueError(f"Expected a non-empty value for `subnet_id` but received {subnet_id!r}")
955
941
  return await self._get(
956
- f"/cloud/v1/subnets/{project_id}/{region_id}/{subnet_id}"
957
- if self._client._base_url_overridden
958
- else f"https://api.gcore.com//cloud/v1/subnets/{project_id}/{region_id}/{subnet_id}",
942
+ f"/cloud/v1/subnets/{project_id}/{region_id}/{subnet_id}",
959
943
  options=make_request_options(
960
944
  extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout
961
945
  ),
@@ -26,6 +26,10 @@ __all__ = ["PlacementGroupsResource", "AsyncPlacementGroupsResource"]
26
26
 
27
27
 
28
28
  class PlacementGroupsResource(SyncAPIResource):
29
+ """
30
+ Placement Groups allow you to specific a policy that determines whether Virtual Machines will be hosted on the same physical server or on different ones.
31
+ """
32
+
29
33
  @cached_property
30
34
  def with_raw_response(self) -> PlacementGroupsResourceWithRawResponse:
31
35
  """
@@ -80,9 +84,7 @@ class PlacementGroupsResource(SyncAPIResource):
80
84
  if region_id is None:
81
85
  region_id = self._client._get_cloud_region_id_path_param()
82
86
  return self._post(
83
- f"/cloud/v1/servergroups/{project_id}/{region_id}"
84
- if self._client._base_url_overridden
85
- else f"https://api.gcore.com//cloud/v1/servergroups/{project_id}/{region_id}",
87
+ f"/cloud/v1/servergroups/{project_id}/{region_id}",
86
88
  body=maybe_transform(
87
89
  {
88
90
  "name": name,
@@ -125,9 +127,7 @@ class PlacementGroupsResource(SyncAPIResource):
125
127
  if region_id is None:
126
128
  region_id = self._client._get_cloud_region_id_path_param()
127
129
  return self._get(
128
- f"/cloud/v1/servergroups/{project_id}/{region_id}"
129
- if self._client._base_url_overridden
130
- else f"https://api.gcore.com//cloud/v1/servergroups/{project_id}/{region_id}",
130
+ f"/cloud/v1/servergroups/{project_id}/{region_id}",
131
131
  options=make_request_options(
132
132
  extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout
133
133
  ),
@@ -166,9 +166,7 @@ class PlacementGroupsResource(SyncAPIResource):
166
166
  if not group_id:
167
167
  raise ValueError(f"Expected a non-empty value for `group_id` but received {group_id!r}")
168
168
  return self._delete(
169
- f"/cloud/v1/servergroups/{project_id}/{region_id}/{group_id}"
170
- if self._client._base_url_overridden
171
- else f"https://api.gcore.com//cloud/v1/servergroups/{project_id}/{region_id}/{group_id}",
169
+ f"/cloud/v1/servergroups/{project_id}/{region_id}/{group_id}",
172
170
  options=make_request_options(
173
171
  extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout
174
172
  ),
@@ -207,9 +205,7 @@ class PlacementGroupsResource(SyncAPIResource):
207
205
  if not group_id:
208
206
  raise ValueError(f"Expected a non-empty value for `group_id` but received {group_id!r}")
209
207
  return self._get(
210
- f"/cloud/v1/servergroups/{project_id}/{region_id}/{group_id}"
211
- if self._client._base_url_overridden
212
- else f"https://api.gcore.com//cloud/v1/servergroups/{project_id}/{region_id}/{group_id}",
208
+ f"/cloud/v1/servergroups/{project_id}/{region_id}/{group_id}",
213
209
  options=make_request_options(
214
210
  extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout
215
211
  ),
@@ -218,6 +214,10 @@ class PlacementGroupsResource(SyncAPIResource):
218
214
 
219
215
 
220
216
  class AsyncPlacementGroupsResource(AsyncAPIResource):
217
+ """
218
+ Placement Groups allow you to specific a policy that determines whether Virtual Machines will be hosted on the same physical server or on different ones.
219
+ """
220
+
221
221
  @cached_property
222
222
  def with_raw_response(self) -> AsyncPlacementGroupsResourceWithRawResponse:
223
223
  """
@@ -272,9 +272,7 @@ class AsyncPlacementGroupsResource(AsyncAPIResource):
272
272
  if region_id is None:
273
273
  region_id = self._client._get_cloud_region_id_path_param()
274
274
  return await self._post(
275
- f"/cloud/v1/servergroups/{project_id}/{region_id}"
276
- if self._client._base_url_overridden
277
- else f"https://api.gcore.com//cloud/v1/servergroups/{project_id}/{region_id}",
275
+ f"/cloud/v1/servergroups/{project_id}/{region_id}",
278
276
  body=await async_maybe_transform(
279
277
  {
280
278
  "name": name,
@@ -317,9 +315,7 @@ class AsyncPlacementGroupsResource(AsyncAPIResource):
317
315
  if region_id is None:
318
316
  region_id = self._client._get_cloud_region_id_path_param()
319
317
  return await self._get(
320
- f"/cloud/v1/servergroups/{project_id}/{region_id}"
321
- if self._client._base_url_overridden
322
- else f"https://api.gcore.com//cloud/v1/servergroups/{project_id}/{region_id}",
318
+ f"/cloud/v1/servergroups/{project_id}/{region_id}",
323
319
  options=make_request_options(
324
320
  extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout
325
321
  ),
@@ -358,9 +354,7 @@ class AsyncPlacementGroupsResource(AsyncAPIResource):
358
354
  if not group_id:
359
355
  raise ValueError(f"Expected a non-empty value for `group_id` but received {group_id!r}")
360
356
  return await self._delete(
361
- f"/cloud/v1/servergroups/{project_id}/{region_id}/{group_id}"
362
- if self._client._base_url_overridden
363
- else f"https://api.gcore.com//cloud/v1/servergroups/{project_id}/{region_id}/{group_id}",
357
+ f"/cloud/v1/servergroups/{project_id}/{region_id}/{group_id}",
364
358
  options=make_request_options(
365
359
  extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout
366
360
  ),
@@ -399,9 +393,7 @@ class AsyncPlacementGroupsResource(AsyncAPIResource):
399
393
  if not group_id:
400
394
  raise ValueError(f"Expected a non-empty value for `group_id` but received {group_id!r}")
401
395
  return await self._get(
402
- f"/cloud/v1/servergroups/{project_id}/{region_id}/{group_id}"
403
- if self._client._base_url_overridden
404
- else f"https://api.gcore.com//cloud/v1/servergroups/{project_id}/{region_id}/{group_id}",
396
+ f"/cloud/v1/servergroups/{project_id}/{region_id}/{group_id}",
405
397
  options=make_request_options(
406
398
  extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout
407
399
  ),