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
@@ -68,6 +68,7 @@ from ....types.cloud.console import Console
68
68
  from ....types.cloud.instance import Instance
69
69
  from ....types.cloud.task_id_list import TaskIDList
70
70
  from ....types.cloud.instance_interface import InstanceInterface
71
+ from ....types.cloud.tag_update_map_param import TagUpdateMapParam
71
72
 
72
73
  __all__ = ["InstancesResource", "AsyncInstancesResource"]
73
74
 
@@ -235,9 +236,7 @@ class InstancesResource(SyncAPIResource):
235
236
  if region_id is None:
236
237
  region_id = self._client._get_cloud_region_id_path_param()
237
238
  return self._post(
238
- f"/cloud/v2/instances/{project_id}/{region_id}"
239
- if self._client._base_url_overridden
240
- else f"https://api.gcore.com//cloud/v2/instances/{project_id}/{region_id}",
239
+ f"/cloud/v2/instances/{project_id}/{region_id}",
241
240
  body=maybe_transform(
242
241
  {
243
242
  "flavor": flavor,
@@ -283,6 +282,7 @@ class InstancesResource(SyncAPIResource):
283
282
  user_data: str | Omit = omit,
284
283
  username: str | Omit = omit,
285
284
  polling_interval_seconds: int | Omit = omit,
285
+ polling_timeout_seconds: int | Omit = omit,
286
286
  # Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
287
287
  # The extra values given here take precedence over values defined on the client or passed to this method.
288
288
  extra_headers: Headers | None = None,
@@ -319,6 +319,7 @@ class InstancesResource(SyncAPIResource):
319
319
  task_id=response.tasks[0],
320
320
  extra_headers=extra_headers,
321
321
  polling_interval_seconds=polling_interval_seconds,
322
+ polling_timeout_seconds=polling_timeout_seconds,
322
323
  )
323
324
  if (
324
325
  not task.created_resources
@@ -339,7 +340,8 @@ class InstancesResource(SyncAPIResource):
339
340
  *,
340
341
  project_id: int | None = None,
341
342
  region_id: int | None = None,
342
- name: str,
343
+ name: str | Omit = omit,
344
+ tags: Optional[TagUpdateMapParam] | Omit = omit,
343
345
  # Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
344
346
  # The extra values given here take precedence over values defined on the client or passed to this method.
345
347
  extra_headers: Headers | None = None,
@@ -348,7 +350,7 @@ class InstancesResource(SyncAPIResource):
348
350
  timeout: float | httpx.Timeout | None | NotGiven = not_given,
349
351
  ) -> Instance:
350
352
  """
351
- Rename instance
353
+ Rename instance or update tags
352
354
 
353
355
  Args:
354
356
  project_id: Project ID
@@ -357,7 +359,29 @@ class InstancesResource(SyncAPIResource):
357
359
 
358
360
  instance_id: Instance ID
359
361
 
360
- name: Name.
362
+ name: Name
363
+
364
+ tags: Update key-value tags using JSON Merge Patch semantics (RFC 7386). Provide
365
+ key-value pairs to add or update tags. Set tag values to `null` to remove tags.
366
+ Unspecified tags remain unchanged. Read-only tags are always preserved and
367
+ cannot be modified.
368
+
369
+ **Examples:**
370
+
371
+ - **Add/update tags:**
372
+ `{'tags': {'environment': 'production', 'team': 'backend'}}` adds new tags or
373
+ updates existing ones.
374
+ - **Delete tags:** `{'tags': {'`old_tag`': null}}` removes specific tags.
375
+ - **Remove all tags:** `{'tags': null}` removes all user-managed tags (read-only
376
+ tags are preserved).
377
+ - **Partial update:** `{'tags': {'environment': 'staging'}}` only updates
378
+ specified tags.
379
+ - **Mixed operations:**
380
+ `{'tags': {'environment': 'production', '`cost_center`': 'engineering', '`deprecated_tag`': null}}`
381
+ adds/updates 'environment' and '`cost_center`' while removing
382
+ '`deprecated_tag`', preserving other existing tags.
383
+ - **Replace all:** first delete existing tags with null values, then add new
384
+ ones in the same request.
361
385
 
362
386
  extra_headers: Send extra headers
363
387
 
@@ -374,10 +398,14 @@ class InstancesResource(SyncAPIResource):
374
398
  if not instance_id:
375
399
  raise ValueError(f"Expected a non-empty value for `instance_id` but received {instance_id!r}")
376
400
  return self._patch(
377
- f"/cloud/v1/instances/{project_id}/{region_id}/{instance_id}"
378
- if self._client._base_url_overridden
379
- else f"https://api.gcore.com//cloud/v1/instances/{project_id}/{region_id}/{instance_id}",
380
- body=maybe_transform({"name": name}, instance_update_params.InstanceUpdateParams),
401
+ f"/cloud/v1/instances/{project_id}/{region_id}/{instance_id}",
402
+ body=maybe_transform(
403
+ {
404
+ "name": name,
405
+ "tags": tags,
406
+ },
407
+ instance_update_params.InstanceUpdateParams,
408
+ ),
381
409
  options=make_request_options(
382
410
  extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout
383
411
  ),
@@ -405,7 +433,8 @@ class InstancesResource(SyncAPIResource):
405
433
  offset: int | Omit = omit,
406
434
  only_isolated: bool | Omit = omit,
407
435
  only_with_fixed_external_ip: bool | Omit = omit,
408
- order_by: Literal["created.asc", "created.desc", "name.asc", "name.desc"] | Omit = omit,
436
+ order_by: Literal["created.asc", "created.desc", "name.asc", "name.desc", "status.asc", "status.desc"]
437
+ | Omit = omit,
409
438
  profile_name: str | Omit = omit,
410
439
  protection_status: Literal["Active", "Queued", "Error"] | Omit = omit,
411
440
  status: Literal[
@@ -525,9 +554,7 @@ class InstancesResource(SyncAPIResource):
525
554
  if region_id is None:
526
555
  region_id = self._client._get_cloud_region_id_path_param()
527
556
  return self._get_api_list(
528
- f"/cloud/v1/instances/{project_id}/{region_id}"
529
- if self._client._base_url_overridden
530
- else f"https://api.gcore.com//cloud/v1/instances/{project_id}/{region_id}",
557
+ f"/cloud/v1/instances/{project_id}/{region_id}",
531
558
  page=SyncOffsetPage[Instance],
532
559
  options=make_request_options(
533
560
  extra_headers=extra_headers,
@@ -621,9 +648,7 @@ class InstancesResource(SyncAPIResource):
621
648
  if not instance_id:
622
649
  raise ValueError(f"Expected a non-empty value for `instance_id` but received {instance_id!r}")
623
650
  return self._delete(
624
- f"/cloud/v1/instances/{project_id}/{region_id}/{instance_id}"
625
- if self._client._base_url_overridden
626
- else f"https://api.gcore.com//cloud/v1/instances/{project_id}/{region_id}/{instance_id}",
651
+ f"/cloud/v1/instances/{project_id}/{region_id}/{instance_id}",
627
652
  options=make_request_options(
628
653
  extra_headers=extra_headers,
629
654
  extra_query=extra_query,
@@ -653,6 +678,7 @@ class InstancesResource(SyncAPIResource):
653
678
  reserved_fixed_ips: str | Omit = omit,
654
679
  volumes: str | Omit = omit,
655
680
  polling_interval_seconds: int | Omit = omit,
681
+ polling_timeout_seconds: int | Omit = omit,
656
682
  # Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
657
683
  # The extra values given here take precedence over values defined on the client or passed to this method.
658
684
  extra_headers: Headers | None = None,
@@ -682,6 +708,7 @@ class InstancesResource(SyncAPIResource):
682
708
  task_id=response.tasks[0],
683
709
  extra_headers=extra_headers,
684
710
  polling_interval_seconds=polling_interval_seconds,
711
+ polling_timeout_seconds=polling_timeout_seconds,
685
712
  )
686
713
 
687
714
  @overload
@@ -774,9 +801,7 @@ class InstancesResource(SyncAPIResource):
774
801
  if not instance_id:
775
802
  raise ValueError(f"Expected a non-empty value for `instance_id` but received {instance_id!r}")
776
803
  return self._post(
777
- f"/cloud/v2/instances/{project_id}/{region_id}/{instance_id}/action"
778
- if self._client._base_url_overridden
779
- else f"https://api.gcore.com//cloud/v2/instances/{project_id}/{region_id}/{instance_id}/action",
804
+ f"/cloud/v2/instances/{project_id}/{region_id}/{instance_id}/action",
780
805
  body=maybe_transform(
781
806
  {
782
807
  "action": action,
@@ -946,9 +971,7 @@ class InstancesResource(SyncAPIResource):
946
971
  if not instance_id:
947
972
  raise ValueError(f"Expected a non-empty value for `instance_id` but received {instance_id!r}")
948
973
  return self._post(
949
- f"/cloud/v1/instances/{project_id}/{region_id}/{instance_id}/put_into_servergroup"
950
- if self._client._base_url_overridden
951
- else f"https://api.gcore.com//cloud/v1/instances/{project_id}/{region_id}/{instance_id}/put_into_servergroup",
974
+ f"/cloud/v1/instances/{project_id}/{region_id}/{instance_id}/put_into_servergroup",
952
975
  body=maybe_transform(
953
976
  {"servergroup_id": servergroup_id},
954
977
  instance_add_to_placement_group_params.InstanceAddToPlacementGroupParams,
@@ -967,6 +990,7 @@ class InstancesResource(SyncAPIResource):
967
990
  region_id: int | None = None,
968
991
  servergroup_id: str,
969
992
  polling_interval_seconds: int | Omit = omit,
993
+ polling_timeout_seconds: int | Omit = omit,
970
994
  # Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
971
995
  # The extra values given here take precedence over values defined on the client or passed to this method.
972
996
  extra_headers: Headers | None = None,
@@ -993,6 +1017,7 @@ class InstancesResource(SyncAPIResource):
993
1017
  task_id=response.tasks[0],
994
1018
  extra_headers=extra_headers,
995
1019
  polling_interval_seconds=polling_interval_seconds,
1020
+ polling_timeout_seconds=polling_timeout_seconds,
996
1021
  )
997
1022
  return self.get(
998
1023
  instance_id=instance_id,
@@ -1043,9 +1068,7 @@ class InstancesResource(SyncAPIResource):
1043
1068
  raise ValueError(f"Expected a non-empty value for `instance_id` but received {instance_id!r}")
1044
1069
  extra_headers = {"Accept": "*/*", **(extra_headers or {})}
1045
1070
  return self._post(
1046
- f"/cloud/v1/instances/{project_id}/{region_id}/{instance_id}/addsecuritygroup"
1047
- if self._client._base_url_overridden
1048
- else f"https://api.gcore.com//cloud/v1/instances/{project_id}/{region_id}/{instance_id}/addsecuritygroup",
1071
+ f"/cloud/v1/instances/{project_id}/{region_id}/{instance_id}/addsecuritygroup",
1049
1072
  body=maybe_transform(
1050
1073
  {
1051
1074
  "name": name,
@@ -1091,9 +1114,7 @@ class InstancesResource(SyncAPIResource):
1091
1114
  if not port_id:
1092
1115
  raise ValueError(f"Expected a non-empty value for `port_id` but received {port_id!r}")
1093
1116
  return self._post(
1094
- f"/cloud/v1/ports/{project_id}/{region_id}/{port_id}/disable_port_security"
1095
- if self._client._base_url_overridden
1096
- else f"https://api.gcore.com//cloud/v1/ports/{project_id}/{region_id}/{port_id}/disable_port_security",
1117
+ f"/cloud/v1/ports/{project_id}/{region_id}/{port_id}/disable_port_security",
1097
1118
  options=make_request_options(
1098
1119
  extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout
1099
1120
  ),
@@ -1132,9 +1153,7 @@ class InstancesResource(SyncAPIResource):
1132
1153
  if not port_id:
1133
1154
  raise ValueError(f"Expected a non-empty value for `port_id` but received {port_id!r}")
1134
1155
  return self._post(
1135
- f"/cloud/v1/ports/{project_id}/{region_id}/{port_id}/enable_port_security"
1136
- if self._client._base_url_overridden
1137
- else f"https://api.gcore.com//cloud/v1/ports/{project_id}/{region_id}/{port_id}/enable_port_security",
1156
+ f"/cloud/v1/ports/{project_id}/{region_id}/{port_id}/enable_port_security",
1138
1157
  options=make_request_options(
1139
1158
  extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout
1140
1159
  ),
@@ -1190,9 +1209,7 @@ class InstancesResource(SyncAPIResource):
1190
1209
  if not instance_id:
1191
1210
  raise ValueError(f"Expected a non-empty value for `instance_id` but received {instance_id!r}")
1192
1211
  return self._get(
1193
- f"/cloud/v1/instances/{project_id}/{region_id}/{instance_id}"
1194
- if self._client._base_url_overridden
1195
- else f"https://api.gcore.com//cloud/v1/instances/{project_id}/{region_id}/{instance_id}",
1212
+ f"/cloud/v1/instances/{project_id}/{region_id}/{instance_id}",
1196
1213
  options=make_request_options(
1197
1214
  extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout
1198
1215
  ),
@@ -1234,9 +1251,7 @@ class InstancesResource(SyncAPIResource):
1234
1251
  if not instance_id:
1235
1252
  raise ValueError(f"Expected a non-empty value for `instance_id` but received {instance_id!r}")
1236
1253
  return self._get(
1237
- f"/cloud/v1/instances/{project_id}/{region_id}/{instance_id}/get_console"
1238
- if self._client._base_url_overridden
1239
- else f"https://api.gcore.com//cloud/v1/instances/{project_id}/{region_id}/{instance_id}/get_console",
1254
+ f"/cloud/v1/instances/{project_id}/{region_id}/{instance_id}/get_console",
1240
1255
  options=make_request_options(
1241
1256
  extra_headers=extra_headers,
1242
1257
  extra_query=extra_query,
@@ -1283,9 +1298,7 @@ class InstancesResource(SyncAPIResource):
1283
1298
  if not instance_id:
1284
1299
  raise ValueError(f"Expected a non-empty value for `instance_id` but received {instance_id!r}")
1285
1300
  return self._post(
1286
- f"/cloud/v1/instances/{project_id}/{region_id}/{instance_id}/remove_from_servergroup"
1287
- if self._client._base_url_overridden
1288
- else f"https://api.gcore.com//cloud/v1/instances/{project_id}/{region_id}/{instance_id}/remove_from_servergroup",
1301
+ f"/cloud/v1/instances/{project_id}/{region_id}/{instance_id}/remove_from_servergroup",
1289
1302
  options=make_request_options(
1290
1303
  extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout
1291
1304
  ),
@@ -1299,6 +1312,7 @@ class InstancesResource(SyncAPIResource):
1299
1312
  project_id: int | None = None,
1300
1313
  region_id: int | None = None,
1301
1314
  polling_interval_seconds: int | Omit = omit,
1315
+ polling_timeout_seconds: int | Omit = omit,
1302
1316
  # Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
1303
1317
  # The extra values given here take precedence over values defined on the client or passed to this method.
1304
1318
  extra_headers: Headers | None = None,
@@ -1324,6 +1338,7 @@ class InstancesResource(SyncAPIResource):
1324
1338
  task_id=response.tasks[0],
1325
1339
  extra_headers=extra_headers,
1326
1340
  polling_interval_seconds=polling_interval_seconds,
1341
+ polling_timeout_seconds=polling_timeout_seconds,
1327
1342
  )
1328
1343
  return self.get(
1329
1344
  instance_id=instance_id,
@@ -1367,9 +1382,7 @@ class InstancesResource(SyncAPIResource):
1367
1382
  if not instance_id:
1368
1383
  raise ValueError(f"Expected a non-empty value for `instance_id` but received {instance_id!r}")
1369
1384
  return self._post(
1370
- f"/cloud/v1/instances/{project_id}/{region_id}/{instance_id}/changeflavor"
1371
- if self._client._base_url_overridden
1372
- else f"https://api.gcore.com//cloud/v1/instances/{project_id}/{region_id}/{instance_id}/changeflavor",
1385
+ f"/cloud/v1/instances/{project_id}/{region_id}/{instance_id}/changeflavor",
1373
1386
  body=maybe_transform({"flavor_id": flavor_id}, instance_resize_params.InstanceResizeParams),
1374
1387
  options=make_request_options(
1375
1388
  extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout
@@ -1385,6 +1398,7 @@ class InstancesResource(SyncAPIResource):
1385
1398
  region_id: int | None = None,
1386
1399
  flavor_id: str,
1387
1400
  polling_interval_seconds: int | Omit = omit,
1401
+ polling_timeout_seconds: int | Omit = omit,
1388
1402
  # Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
1389
1403
  # The extra values given here take precedence over values defined on the client or passed to this method.
1390
1404
  extra_headers: Headers | None = None,
@@ -1411,6 +1425,7 @@ class InstancesResource(SyncAPIResource):
1411
1425
  task_id=response.tasks[0],
1412
1426
  extra_headers=extra_headers,
1413
1427
  polling_interval_seconds=polling_interval_seconds,
1428
+ polling_timeout_seconds=polling_timeout_seconds,
1414
1429
  )
1415
1430
  return self.get(
1416
1431
  instance_id=instance_id,
@@ -1461,9 +1476,7 @@ class InstancesResource(SyncAPIResource):
1461
1476
  raise ValueError(f"Expected a non-empty value for `instance_id` but received {instance_id!r}")
1462
1477
  extra_headers = {"Accept": "*/*", **(extra_headers or {})}
1463
1478
  return self._post(
1464
- f"/cloud/v1/instances/{project_id}/{region_id}/{instance_id}/delsecuritygroup"
1465
- if self._client._base_url_overridden
1466
- else f"https://api.gcore.com//cloud/v1/instances/{project_id}/{region_id}/{instance_id}/delsecuritygroup",
1479
+ f"/cloud/v1/instances/{project_id}/{region_id}/{instance_id}/delsecuritygroup",
1467
1480
  body=maybe_transform(
1468
1481
  {
1469
1482
  "name": name,
@@ -1641,9 +1654,7 @@ class AsyncInstancesResource(AsyncAPIResource):
1641
1654
  if region_id is None:
1642
1655
  region_id = self._client._get_cloud_region_id_path_param()
1643
1656
  return await self._post(
1644
- f"/cloud/v2/instances/{project_id}/{region_id}"
1645
- if self._client._base_url_overridden
1646
- else f"https://api.gcore.com//cloud/v2/instances/{project_id}/{region_id}",
1657
+ f"/cloud/v2/instances/{project_id}/{region_id}",
1647
1658
  body=await async_maybe_transform(
1648
1659
  {
1649
1660
  "flavor": flavor,
@@ -1689,6 +1700,7 @@ class AsyncInstancesResource(AsyncAPIResource):
1689
1700
  user_data: str | Omit = omit,
1690
1701
  username: str | Omit = omit,
1691
1702
  polling_interval_seconds: int | Omit = omit,
1703
+ polling_timeout_seconds: int | Omit = omit,
1692
1704
  # Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
1693
1705
  # The extra values given here take precedence over values defined on the client or passed to this method.
1694
1706
  extra_headers: Headers | None = None,
@@ -1725,6 +1737,7 @@ class AsyncInstancesResource(AsyncAPIResource):
1725
1737
  task_id=response.tasks[0],
1726
1738
  extra_headers=extra_headers,
1727
1739
  polling_interval_seconds=polling_interval_seconds,
1740
+ polling_timeout_seconds=polling_timeout_seconds,
1728
1741
  )
1729
1742
  if (
1730
1743
  not task.created_resources
@@ -1745,7 +1758,8 @@ class AsyncInstancesResource(AsyncAPIResource):
1745
1758
  *,
1746
1759
  project_id: int | None = None,
1747
1760
  region_id: int | None = None,
1748
- name: str,
1761
+ name: str | Omit = omit,
1762
+ tags: Optional[TagUpdateMapParam] | Omit = omit,
1749
1763
  # Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
1750
1764
  # The extra values given here take precedence over values defined on the client or passed to this method.
1751
1765
  extra_headers: Headers | None = None,
@@ -1754,7 +1768,7 @@ class AsyncInstancesResource(AsyncAPIResource):
1754
1768
  timeout: float | httpx.Timeout | None | NotGiven = not_given,
1755
1769
  ) -> Instance:
1756
1770
  """
1757
- Rename instance
1771
+ Rename instance or update tags
1758
1772
 
1759
1773
  Args:
1760
1774
  project_id: Project ID
@@ -1763,7 +1777,29 @@ class AsyncInstancesResource(AsyncAPIResource):
1763
1777
 
1764
1778
  instance_id: Instance ID
1765
1779
 
1766
- name: Name.
1780
+ name: Name
1781
+
1782
+ tags: Update key-value tags using JSON Merge Patch semantics (RFC 7386). Provide
1783
+ key-value pairs to add or update tags. Set tag values to `null` to remove tags.
1784
+ Unspecified tags remain unchanged. Read-only tags are always preserved and
1785
+ cannot be modified.
1786
+
1787
+ **Examples:**
1788
+
1789
+ - **Add/update tags:**
1790
+ `{'tags': {'environment': 'production', 'team': 'backend'}}` adds new tags or
1791
+ updates existing ones.
1792
+ - **Delete tags:** `{'tags': {'`old_tag`': null}}` removes specific tags.
1793
+ - **Remove all tags:** `{'tags': null}` removes all user-managed tags (read-only
1794
+ tags are preserved).
1795
+ - **Partial update:** `{'tags': {'environment': 'staging'}}` only updates
1796
+ specified tags.
1797
+ - **Mixed operations:**
1798
+ `{'tags': {'environment': 'production', '`cost_center`': 'engineering', '`deprecated_tag`': null}}`
1799
+ adds/updates 'environment' and '`cost_center`' while removing
1800
+ '`deprecated_tag`', preserving other existing tags.
1801
+ - **Replace all:** first delete existing tags with null values, then add new
1802
+ ones in the same request.
1767
1803
 
1768
1804
  extra_headers: Send extra headers
1769
1805
 
@@ -1780,10 +1816,14 @@ class AsyncInstancesResource(AsyncAPIResource):
1780
1816
  if not instance_id:
1781
1817
  raise ValueError(f"Expected a non-empty value for `instance_id` but received {instance_id!r}")
1782
1818
  return await self._patch(
1783
- f"/cloud/v1/instances/{project_id}/{region_id}/{instance_id}"
1784
- if self._client._base_url_overridden
1785
- else f"https://api.gcore.com//cloud/v1/instances/{project_id}/{region_id}/{instance_id}",
1786
- body=await async_maybe_transform({"name": name}, instance_update_params.InstanceUpdateParams),
1819
+ f"/cloud/v1/instances/{project_id}/{region_id}/{instance_id}",
1820
+ body=await async_maybe_transform(
1821
+ {
1822
+ "name": name,
1823
+ "tags": tags,
1824
+ },
1825
+ instance_update_params.InstanceUpdateParams,
1826
+ ),
1787
1827
  options=make_request_options(
1788
1828
  extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout
1789
1829
  ),
@@ -1811,7 +1851,8 @@ class AsyncInstancesResource(AsyncAPIResource):
1811
1851
  offset: int | Omit = omit,
1812
1852
  only_isolated: bool | Omit = omit,
1813
1853
  only_with_fixed_external_ip: bool | Omit = omit,
1814
- order_by: Literal["created.asc", "created.desc", "name.asc", "name.desc"] | Omit = omit,
1854
+ order_by: Literal["created.asc", "created.desc", "name.asc", "name.desc", "status.asc", "status.desc"]
1855
+ | Omit = omit,
1815
1856
  profile_name: str | Omit = omit,
1816
1857
  protection_status: Literal["Active", "Queued", "Error"] | Omit = omit,
1817
1858
  status: Literal[
@@ -1931,9 +1972,7 @@ class AsyncInstancesResource(AsyncAPIResource):
1931
1972
  if region_id is None:
1932
1973
  region_id = self._client._get_cloud_region_id_path_param()
1933
1974
  return self._get_api_list(
1934
- f"/cloud/v1/instances/{project_id}/{region_id}"
1935
- if self._client._base_url_overridden
1936
- else f"https://api.gcore.com//cloud/v1/instances/{project_id}/{region_id}",
1975
+ f"/cloud/v1/instances/{project_id}/{region_id}",
1937
1976
  page=AsyncOffsetPage[Instance],
1938
1977
  options=make_request_options(
1939
1978
  extra_headers=extra_headers,
@@ -2027,9 +2066,7 @@ class AsyncInstancesResource(AsyncAPIResource):
2027
2066
  if not instance_id:
2028
2067
  raise ValueError(f"Expected a non-empty value for `instance_id` but received {instance_id!r}")
2029
2068
  return await self._delete(
2030
- f"/cloud/v1/instances/{project_id}/{region_id}/{instance_id}"
2031
- if self._client._base_url_overridden
2032
- else f"https://api.gcore.com//cloud/v1/instances/{project_id}/{region_id}/{instance_id}",
2069
+ f"/cloud/v1/instances/{project_id}/{region_id}/{instance_id}",
2033
2070
  options=make_request_options(
2034
2071
  extra_headers=extra_headers,
2035
2072
  extra_query=extra_query,
@@ -2059,6 +2096,7 @@ class AsyncInstancesResource(AsyncAPIResource):
2059
2096
  reserved_fixed_ips: str | Omit = omit,
2060
2097
  volumes: str | Omit = omit,
2061
2098
  polling_interval_seconds: int | Omit = omit,
2099
+ polling_timeout_seconds: int | Omit = omit,
2062
2100
  # Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
2063
2101
  # The extra values given here take precedence over values defined on the client or passed to this method.
2064
2102
  extra_headers: Headers | None = None,
@@ -2088,6 +2126,7 @@ class AsyncInstancesResource(AsyncAPIResource):
2088
2126
  task_id=response.tasks[0],
2089
2127
  extra_headers=extra_headers,
2090
2128
  polling_interval_seconds=polling_interval_seconds,
2129
+ polling_timeout_seconds=polling_timeout_seconds,
2091
2130
  )
2092
2131
 
2093
2132
  @overload
@@ -2180,9 +2219,7 @@ class AsyncInstancesResource(AsyncAPIResource):
2180
2219
  if not instance_id:
2181
2220
  raise ValueError(f"Expected a non-empty value for `instance_id` but received {instance_id!r}")
2182
2221
  return await self._post(
2183
- f"/cloud/v2/instances/{project_id}/{region_id}/{instance_id}/action"
2184
- if self._client._base_url_overridden
2185
- else f"https://api.gcore.com//cloud/v2/instances/{project_id}/{region_id}/{instance_id}/action",
2222
+ f"/cloud/v2/instances/{project_id}/{region_id}/{instance_id}/action",
2186
2223
  body=await async_maybe_transform(
2187
2224
  {
2188
2225
  "action": action,
@@ -2352,9 +2389,7 @@ class AsyncInstancesResource(AsyncAPIResource):
2352
2389
  if not instance_id:
2353
2390
  raise ValueError(f"Expected a non-empty value for `instance_id` but received {instance_id!r}")
2354
2391
  return await self._post(
2355
- f"/cloud/v1/instances/{project_id}/{region_id}/{instance_id}/put_into_servergroup"
2356
- if self._client._base_url_overridden
2357
- else f"https://api.gcore.com//cloud/v1/instances/{project_id}/{region_id}/{instance_id}/put_into_servergroup",
2392
+ f"/cloud/v1/instances/{project_id}/{region_id}/{instance_id}/put_into_servergroup",
2358
2393
  body=await async_maybe_transform(
2359
2394
  {"servergroup_id": servergroup_id},
2360
2395
  instance_add_to_placement_group_params.InstanceAddToPlacementGroupParams,
@@ -2373,6 +2408,7 @@ class AsyncInstancesResource(AsyncAPIResource):
2373
2408
  region_id: int | None = None,
2374
2409
  servergroup_id: str,
2375
2410
  polling_interval_seconds: int | Omit = omit,
2411
+ polling_timeout_seconds: int | Omit = omit,
2376
2412
  # Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
2377
2413
  # The extra values given here take precedence over values defined on the client or passed to this method.
2378
2414
  extra_headers: Headers | None = None,
@@ -2399,6 +2435,7 @@ class AsyncInstancesResource(AsyncAPIResource):
2399
2435
  task_id=response.tasks[0],
2400
2436
  extra_headers=extra_headers,
2401
2437
  polling_interval_seconds=polling_interval_seconds,
2438
+ polling_timeout_seconds=polling_timeout_seconds,
2402
2439
  )
2403
2440
  return await self.get(
2404
2441
  instance_id=instance_id,
@@ -2449,9 +2486,7 @@ class AsyncInstancesResource(AsyncAPIResource):
2449
2486
  raise ValueError(f"Expected a non-empty value for `instance_id` but received {instance_id!r}")
2450
2487
  extra_headers = {"Accept": "*/*", **(extra_headers or {})}
2451
2488
  return await self._post(
2452
- f"/cloud/v1/instances/{project_id}/{region_id}/{instance_id}/addsecuritygroup"
2453
- if self._client._base_url_overridden
2454
- else f"https://api.gcore.com//cloud/v1/instances/{project_id}/{region_id}/{instance_id}/addsecuritygroup",
2489
+ f"/cloud/v1/instances/{project_id}/{region_id}/{instance_id}/addsecuritygroup",
2455
2490
  body=await async_maybe_transform(
2456
2491
  {
2457
2492
  "name": name,
@@ -2497,9 +2532,7 @@ class AsyncInstancesResource(AsyncAPIResource):
2497
2532
  if not port_id:
2498
2533
  raise ValueError(f"Expected a non-empty value for `port_id` but received {port_id!r}")
2499
2534
  return await self._post(
2500
- f"/cloud/v1/ports/{project_id}/{region_id}/{port_id}/disable_port_security"
2501
- if self._client._base_url_overridden
2502
- else f"https://api.gcore.com//cloud/v1/ports/{project_id}/{region_id}/{port_id}/disable_port_security",
2535
+ f"/cloud/v1/ports/{project_id}/{region_id}/{port_id}/disable_port_security",
2503
2536
  options=make_request_options(
2504
2537
  extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout
2505
2538
  ),
@@ -2538,9 +2571,7 @@ class AsyncInstancesResource(AsyncAPIResource):
2538
2571
  if not port_id:
2539
2572
  raise ValueError(f"Expected a non-empty value for `port_id` but received {port_id!r}")
2540
2573
  return await self._post(
2541
- f"/cloud/v1/ports/{project_id}/{region_id}/{port_id}/enable_port_security"
2542
- if self._client._base_url_overridden
2543
- else f"https://api.gcore.com//cloud/v1/ports/{project_id}/{region_id}/{port_id}/enable_port_security",
2574
+ f"/cloud/v1/ports/{project_id}/{region_id}/{port_id}/enable_port_security",
2544
2575
  options=make_request_options(
2545
2576
  extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout
2546
2577
  ),
@@ -2596,9 +2627,7 @@ class AsyncInstancesResource(AsyncAPIResource):
2596
2627
  if not instance_id:
2597
2628
  raise ValueError(f"Expected a non-empty value for `instance_id` but received {instance_id!r}")
2598
2629
  return await self._get(
2599
- f"/cloud/v1/instances/{project_id}/{region_id}/{instance_id}"
2600
- if self._client._base_url_overridden
2601
- else f"https://api.gcore.com//cloud/v1/instances/{project_id}/{region_id}/{instance_id}",
2630
+ f"/cloud/v1/instances/{project_id}/{region_id}/{instance_id}",
2602
2631
  options=make_request_options(
2603
2632
  extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout
2604
2633
  ),
@@ -2640,9 +2669,7 @@ class AsyncInstancesResource(AsyncAPIResource):
2640
2669
  if not instance_id:
2641
2670
  raise ValueError(f"Expected a non-empty value for `instance_id` but received {instance_id!r}")
2642
2671
  return await self._get(
2643
- f"/cloud/v1/instances/{project_id}/{region_id}/{instance_id}/get_console"
2644
- if self._client._base_url_overridden
2645
- else f"https://api.gcore.com//cloud/v1/instances/{project_id}/{region_id}/{instance_id}/get_console",
2672
+ f"/cloud/v1/instances/{project_id}/{region_id}/{instance_id}/get_console",
2646
2673
  options=make_request_options(
2647
2674
  extra_headers=extra_headers,
2648
2675
  extra_query=extra_query,
@@ -2689,9 +2716,7 @@ class AsyncInstancesResource(AsyncAPIResource):
2689
2716
  if not instance_id:
2690
2717
  raise ValueError(f"Expected a non-empty value for `instance_id` but received {instance_id!r}")
2691
2718
  return await self._post(
2692
- f"/cloud/v1/instances/{project_id}/{region_id}/{instance_id}/remove_from_servergroup"
2693
- if self._client._base_url_overridden
2694
- else f"https://api.gcore.com//cloud/v1/instances/{project_id}/{region_id}/{instance_id}/remove_from_servergroup",
2719
+ f"/cloud/v1/instances/{project_id}/{region_id}/{instance_id}/remove_from_servergroup",
2695
2720
  options=make_request_options(
2696
2721
  extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout
2697
2722
  ),
@@ -2705,6 +2730,7 @@ class AsyncInstancesResource(AsyncAPIResource):
2705
2730
  project_id: int | None = None,
2706
2731
  region_id: int | None = None,
2707
2732
  polling_interval_seconds: int | Omit = omit,
2733
+ polling_timeout_seconds: int | Omit = omit,
2708
2734
  # Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
2709
2735
  # The extra values given here take precedence over values defined on the client or passed to this method.
2710
2736
  extra_headers: Headers | None = None,
@@ -2730,6 +2756,7 @@ class AsyncInstancesResource(AsyncAPIResource):
2730
2756
  task_id=response.tasks[0],
2731
2757
  extra_headers=extra_headers,
2732
2758
  polling_interval_seconds=polling_interval_seconds,
2759
+ polling_timeout_seconds=polling_timeout_seconds,
2733
2760
  )
2734
2761
  return await self.get(
2735
2762
  instance_id=instance_id,
@@ -2773,9 +2800,7 @@ class AsyncInstancesResource(AsyncAPIResource):
2773
2800
  if not instance_id:
2774
2801
  raise ValueError(f"Expected a non-empty value for `instance_id` but received {instance_id!r}")
2775
2802
  return await self._post(
2776
- f"/cloud/v1/instances/{project_id}/{region_id}/{instance_id}/changeflavor"
2777
- if self._client._base_url_overridden
2778
- else f"https://api.gcore.com//cloud/v1/instances/{project_id}/{region_id}/{instance_id}/changeflavor",
2803
+ f"/cloud/v1/instances/{project_id}/{region_id}/{instance_id}/changeflavor",
2779
2804
  body=await async_maybe_transform({"flavor_id": flavor_id}, instance_resize_params.InstanceResizeParams),
2780
2805
  options=make_request_options(
2781
2806
  extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout
@@ -2791,6 +2816,7 @@ class AsyncInstancesResource(AsyncAPIResource):
2791
2816
  region_id: int | None = None,
2792
2817
  flavor_id: str,
2793
2818
  polling_interval_seconds: int | Omit = omit,
2819
+ polling_timeout_seconds: int | Omit = omit,
2794
2820
  # Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
2795
2821
  # The extra values given here take precedence over values defined on the client or passed to this method.
2796
2822
  extra_headers: Headers | None = None,
@@ -2817,6 +2843,7 @@ class AsyncInstancesResource(AsyncAPIResource):
2817
2843
  task_id=response.tasks[0],
2818
2844
  extra_headers=extra_headers,
2819
2845
  polling_interval_seconds=polling_interval_seconds,
2846
+ polling_timeout_seconds=polling_timeout_seconds,
2820
2847
  )
2821
2848
  return await self.get(
2822
2849
  instance_id=instance_id,
@@ -2867,9 +2894,7 @@ class AsyncInstancesResource(AsyncAPIResource):
2867
2894
  raise ValueError(f"Expected a non-empty value for `instance_id` but received {instance_id!r}")
2868
2895
  extra_headers = {"Accept": "*/*", **(extra_headers or {})}
2869
2896
  return await self._post(
2870
- f"/cloud/v1/instances/{project_id}/{region_id}/{instance_id}/delsecuritygroup"
2871
- if self._client._base_url_overridden
2872
- else f"https://api.gcore.com//cloud/v1/instances/{project_id}/{region_id}/{instance_id}/delsecuritygroup",
2897
+ f"/cloud/v1/instances/{project_id}/{region_id}/{instance_id}/delsecuritygroup",
2873
2898
  body=await async_maybe_transform(
2874
2899
  {
2875
2900
  "name": name,