gcore 0.16.0__py3-none-any.whl → 0.23.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 (220) hide show
  1. gcore/_client.py +16 -0
  2. gcore/_models.py +37 -15
  3. gcore/_streaming.py +12 -12
  4. gcore/_utils/_sync.py +3 -31
  5. gcore/_utils/_utils.py +1 -1
  6. gcore/_version.py +1 -1
  7. gcore/resources/cdn/audit_log.py +4 -4
  8. gcore/resources/cdn/cdn.py +120 -21
  9. gcore/resources/cdn/ip_ranges.py +97 -5
  10. gcore/resources/cdn/{logs/logs.py → logs.py} +9 -9
  11. gcore/resources/cdn/resources/resources.py +20 -20
  12. gcore/resources/cdn/statistics.py +56 -58
  13. gcore/resources/cloud/__init__.py +40 -12
  14. gcore/resources/cloud/audit_logs.py +20 -0
  15. gcore/resources/cloud/baremetal/servers.py +48 -14
  16. gcore/resources/cloud/billing_reservations.py +2 -2
  17. gcore/resources/cloud/cloud.py +100 -18
  18. gcore/resources/cloud/databases/__init__.py +33 -0
  19. gcore/resources/cloud/databases/databases.py +102 -0
  20. gcore/resources/cloud/databases/postgres/__init__.py +61 -0
  21. gcore/resources/cloud/databases/postgres/clusters/__init__.py +33 -0
  22. gcore/resources/cloud/databases/postgres/clusters/clusters.py +716 -0
  23. gcore/resources/cloud/databases/postgres/clusters/user_credentials.py +281 -0
  24. gcore/resources/cloud/databases/postgres/configurations.py +169 -0
  25. gcore/resources/cloud/databases/postgres/custom_configurations.py +197 -0
  26. gcore/resources/cloud/databases/postgres/postgres.py +166 -0
  27. gcore/resources/cloud/file_shares/file_shares.py +154 -49
  28. gcore/resources/cloud/floating_ips.py +42 -10
  29. gcore/resources/cloud/gpu_baremetal_clusters/gpu_baremetal_clusters.py +70 -10
  30. gcore/resources/cloud/gpu_baremetal_clusters/images.py +40 -6
  31. gcore/resources/cloud/gpu_baremetal_clusters/servers.py +16 -0
  32. gcore/resources/cloud/gpu_virtual_clusters/__init__.py +89 -0
  33. gcore/resources/cloud/gpu_virtual_clusters/flavors.py +211 -0
  34. gcore/resources/cloud/gpu_virtual_clusters/gpu_virtual_clusters.py +1551 -0
  35. gcore/resources/cloud/gpu_virtual_clusters/images.py +582 -0
  36. gcore/resources/cloud/gpu_virtual_clusters/interfaces.py +187 -0
  37. gcore/resources/cloud/gpu_virtual_clusters/servers.py +506 -0
  38. gcore/resources/cloud/gpu_virtual_clusters/volumes.py +187 -0
  39. gcore/resources/cloud/inference/deployments/deployments.py +52 -4
  40. gcore/resources/cloud/instances/images.py +72 -18
  41. gcore/resources/cloud/instances/instances.py +110 -18
  42. gcore/resources/cloud/instances/interfaces.py +12 -0
  43. gcore/resources/cloud/k8s/__init__.py +12 -12
  44. gcore/resources/cloud/k8s/clusters/clusters.py +25 -25
  45. gcore/resources/cloud/k8s/clusters/pools/pools.py +14 -14
  46. gcore/resources/cloud/k8s/k8s.py +24 -24
  47. gcore/resources/cloud/load_balancers/l7_policies/l7_policies.py +1420 -218
  48. gcore/resources/cloud/load_balancers/l7_policies/rules.py +134 -22
  49. gcore/resources/cloud/load_balancers/listeners.py +77 -6
  50. gcore/resources/cloud/load_balancers/load_balancers.py +92 -14
  51. gcore/resources/cloud/load_balancers/pools/pools.py +52 -4
  52. gcore/resources/cloud/networks/networks.py +30 -10
  53. gcore/resources/cloud/networks/subnets.py +26 -10
  54. gcore/resources/cloud/placement_groups.py +8 -0
  55. gcore/resources/cloud/projects.py +99 -119
  56. gcore/resources/cloud/quotas/requests.py +0 -8
  57. gcore/resources/cloud/reserved_fixed_ips/reserved_fixed_ips.py +18 -0
  58. gcore/resources/cloud/secrets.py +16 -0
  59. gcore/resources/cloud/security_groups/security_groups.py +38 -12
  60. gcore/resources/cloud/ssh_keys.py +10 -0
  61. gcore/resources/cloud/tasks.py +22 -7
  62. gcore/resources/cloud/volumes.py +65 -23
  63. gcore/resources/dns/zones/rrsets.py +10 -10
  64. gcore/resources/dns/zones/zones.py +2 -2
  65. gcore/resources/security/bgp_announces.py +0 -4
  66. gcore/resources/security/profiles.py +31 -7
  67. gcore/resources/storage/credentials.py +0 -28
  68. gcore/resources/storage/storage.py +2 -2
  69. gcore/types/cdn/__init__.py +5 -0
  70. gcore/types/cdn/alibaba_regions.py +22 -0
  71. gcore/types/cdn/audit_log_list_params.py +2 -2
  72. gcore/types/cdn/aws_regions.py +22 -0
  73. gcore/types/cdn/cdn_list_purge_statuses_response.py +10 -0
  74. gcore/types/cdn/cdn_resource.py +17 -12
  75. gcore/types/cdn/ip_range_list_ips_params.py +19 -0
  76. gcore/types/cdn/ip_range_list_params.py +19 -0
  77. gcore/types/cdn/resource_create_params.py +17 -12
  78. gcore/types/cdn/resource_purge_params.py +4 -4
  79. gcore/types/cdn/resource_replace_params.py +17 -12
  80. gcore/types/cdn/resource_update_params.py +17 -12
  81. gcore/types/cdn/resource_usage_stats.py +16 -15
  82. gcore/types/cdn/resources/cdn_resource_rule.py +15 -10
  83. gcore/types/cdn/resources/rule_create_params.py +15 -10
  84. gcore/types/cdn/resources/rule_replace_params.py +15 -10
  85. gcore/types/cdn/resources/rule_update_params.py +15 -10
  86. gcore/types/cdn/rule_template.py +15 -10
  87. gcore/types/cdn/rule_template_create_params.py +15 -10
  88. gcore/types/cdn/rule_template_replace_params.py +15 -10
  89. gcore/types/cdn/rule_template_update_params.py +15 -10
  90. gcore/types/cdn/statistic_get_logs_usage_aggregated_params.py +4 -1
  91. gcore/types/cdn/statistic_get_logs_usage_series_params.py +5 -12
  92. gcore/types/cdn/statistic_get_resource_usage_aggregated_params.py +10 -21
  93. gcore/types/cdn/statistic_get_resource_usage_series_params.py +6 -1
  94. gcore/types/cdn/statistic_get_shield_usage_aggregated_params.py +5 -2
  95. gcore/types/cdn/statistic_get_shield_usage_series_params.py +3 -0
  96. gcore/types/cloud/__init__.py +9 -3
  97. gcore/types/cloud/audit_log_entry.py +9 -3
  98. gcore/types/cloud/audit_log_list_params.py +12 -0
  99. gcore/types/cloud/baremetal/server_create_params.py +7 -7
  100. gcore/types/cloud/baremetal_flavor.py +0 -6
  101. gcore/types/cloud/billing_reservation_list_params.py +1 -1
  102. gcore/types/cloud/blackhole_port.py +4 -1
  103. gcore/types/cloud/databases/postgres/__init__.py +12 -0
  104. gcore/types/cloud/databases/postgres/cluster_create_params.py +108 -0
  105. gcore/types/cloud/databases/postgres/cluster_list_params.py +19 -0
  106. gcore/types/cloud/databases/postgres/cluster_update_params.py +102 -0
  107. gcore/types/cloud/databases/postgres/clusters/__init__.py +5 -0
  108. gcore/types/cloud/databases/postgres/clusters/postgres_user_credentials.py +13 -0
  109. gcore/types/cloud/databases/postgres/custom_configuration_validate_params.py +19 -0
  110. gcore/types/cloud/databases/postgres/pg_conf_validation.py +15 -0
  111. gcore/types/cloud/databases/postgres/postgres_cluster.py +118 -0
  112. gcore/types/cloud/databases/postgres/postgres_cluster_short.py +22 -0
  113. gcore/types/cloud/databases/postgres/postgres_configuration.py +31 -0
  114. gcore/types/cloud/file_share_create_params.py +8 -8
  115. gcore/types/cloud/file_share_update_params.py +7 -2
  116. gcore/types/cloud/floating_ip.py +5 -1
  117. gcore/types/cloud/floating_ip_create_params.py +4 -4
  118. gcore/types/cloud/floating_ip_detailed.py +5 -1
  119. gcore/types/cloud/floating_ip_list_params.py +8 -0
  120. gcore/types/cloud/floating_ip_update_params.py +7 -2
  121. gcore/types/cloud/gpu_baremetal_cluster.py +18 -3
  122. gcore/types/cloud/gpu_baremetal_cluster_action_params.py +7 -2
  123. gcore/types/cloud/gpu_baremetal_cluster_create_params.py +16 -4
  124. gcore/types/cloud/gpu_baremetal_clusters/gpu_baremetal_cluster_server.py +5 -2
  125. gcore/types/cloud/gpu_baremetal_clusters/image_upload_params.py +4 -4
  126. gcore/types/cloud/gpu_image.py +9 -0
  127. gcore/types/cloud/gpu_virtual_cluster.py +189 -0
  128. gcore/types/cloud/gpu_virtual_cluster_action_params.py +127 -0
  129. gcore/types/cloud/gpu_virtual_cluster_create_params.py +213 -0
  130. gcore/types/cloud/gpu_virtual_cluster_delete_params.py +41 -0
  131. gcore/types/cloud/gpu_virtual_cluster_list_params.py +21 -0
  132. gcore/types/cloud/gpu_virtual_cluster_update_params.py +18 -0
  133. gcore/types/cloud/gpu_virtual_clusters/__init__.py +16 -0
  134. gcore/types/cloud/gpu_virtual_clusters/flavor_list_params.py +21 -0
  135. gcore/types/cloud/gpu_virtual_clusters/gpu_virtual_cluster_server.py +77 -0
  136. gcore/types/cloud/gpu_virtual_clusters/gpu_virtual_cluster_server_list.py +16 -0
  137. gcore/types/cloud/gpu_virtual_clusters/gpu_virtual_cluster_volume.py +64 -0
  138. gcore/types/cloud/gpu_virtual_clusters/gpu_virtual_cluster_volume_list.py +16 -0
  139. gcore/types/cloud/gpu_virtual_clusters/gpu_virtual_flavor.py +155 -0
  140. gcore/types/cloud/gpu_virtual_clusters/gpu_virtual_flavor_list.py +16 -0
  141. gcore/types/cloud/gpu_virtual_clusters/gpu_virtual_interface.py +190 -0
  142. gcore/types/cloud/gpu_virtual_clusters/gpu_virtual_interface_list.py +16 -0
  143. gcore/types/cloud/gpu_virtual_clusters/image_upload_params.py +56 -0
  144. gcore/types/cloud/gpu_virtual_clusters/server_delete_params.py +44 -0
  145. gcore/types/cloud/gpu_virtual_clusters/server_list_params.py +75 -0
  146. gcore/types/cloud/image.py +9 -0
  147. gcore/types/cloud/inference/deployment_create_params.py +1 -1
  148. gcore/types/cloud/inference/deployment_update_params.py +1 -1
  149. gcore/types/cloud/inference/inference_deployment.py +1 -1
  150. gcore/types/cloud/instance_create_params.py +27 -27
  151. gcore/types/cloud/instance_update_params.py +7 -2
  152. gcore/types/cloud/instances/image_create_from_volume_params.py +4 -4
  153. gcore/types/cloud/instances/image_update_params.py +4 -4
  154. gcore/types/cloud/instances/image_upload_params.py +4 -4
  155. gcore/types/cloud/k8s/__init__.py +4 -4
  156. gcore/types/cloud/k8s/cluster_update_params.py +5 -5
  157. gcore/types/cloud/k8s/clusters/__init__.py +2 -2
  158. gcore/types/cloud/k8s/clusters/k8s_cluster_pool.py +2 -2
  159. gcore/types/cloud/k8s/clusters/k8s_cluster_pool_list.py +4 -4
  160. gcore/types/cloud/k8s/k8s_cluster.py +4 -4
  161. gcore/types/cloud/k8s/k8s_cluster_certificate.py +2 -2
  162. gcore/types/cloud/k8s/k8s_cluster_kubeconfig.py +14 -2
  163. gcore/types/cloud/k8s/k8s_cluster_list.py +4 -4
  164. gcore/types/cloud/k8s_cluster_version.py +2 -2
  165. gcore/types/cloud/k8s_cluster_version_list.py +4 -4
  166. gcore/types/cloud/load_balancer_create_params.py +14 -8
  167. gcore/types/cloud/load_balancer_flavor_detail.py +2 -2
  168. gcore/types/cloud/load_balancer_l7_policy.py +29 -16
  169. gcore/types/cloud/load_balancer_l7_policy_list.py +3 -3
  170. gcore/types/cloud/load_balancer_l7_rule.py +14 -23
  171. gcore/types/cloud/load_balancer_l7_rule_list.py +3 -3
  172. gcore/types/cloud/load_balancer_listener_detail.py +2 -2
  173. gcore/types/cloud/load_balancer_update_params.py +7 -2
  174. gcore/types/cloud/load_balancers/__init__.py +1 -0
  175. gcore/types/cloud/load_balancers/l7_policies/rule_create_params.py +5 -10
  176. gcore/types/cloud/load_balancers/l7_policies/rule_replace_params.py +7 -11
  177. gcore/types/cloud/load_balancers/l7_policy_create_params.py +102 -18
  178. gcore/types/cloud/load_balancers/l7_policy_replace_params.py +94 -16
  179. gcore/types/cloud/load_balancers/listener_create_params.py +4 -1
  180. gcore/types/cloud/load_balancers/listener_delete_params.py +18 -0
  181. gcore/types/cloud/load_balancers/listener_update_params.py +4 -1
  182. gcore/types/cloud/load_balancers/pool_create_params.py +1 -1
  183. gcore/types/cloud/network_create_params.py +4 -4
  184. gcore/types/cloud/network_update_params.py +7 -2
  185. gcore/types/cloud/networks/subnet_create_params.py +4 -4
  186. gcore/types/cloud/networks/subnet_update_params.py +7 -2
  187. gcore/types/cloud/project_create_params.py +0 -6
  188. gcore/types/cloud/{project_replace_params.py → project_update_params.py} +2 -2
  189. gcore/types/cloud/quotas/request_create_params.py +0 -3
  190. gcore/types/cloud/region.py +3 -3
  191. gcore/types/cloud/security_group.py +8 -1
  192. gcore/types/cloud/security_group_create_params.py +7 -5
  193. gcore/types/cloud/security_group_list_params.py +6 -4
  194. gcore/types/cloud/security_group_update_params.py +7 -2
  195. gcore/types/cloud/ssh_key_list_params.py +7 -0
  196. gcore/types/cloud/tag.py +2 -2
  197. gcore/types/cloud/task_id_list.py +3 -3
  198. gcore/types/cloud/volume_create_params.py +12 -12
  199. gcore/types/cloud/volume_update_params.py +7 -2
  200. gcore/types/dns/zone_list_params.py +1 -1
  201. gcore/types/iam/api_token_create.py +70 -1
  202. gcore/types/security/bgp_announce_list_params.py +0 -2
  203. gcore/types/security/client_profile.py +1 -0
  204. gcore/types/security/profile_create_params.py +4 -2
  205. gcore/types/security/profile_recreate_params.py +4 -2
  206. gcore/types/security/profile_replace_params.py +4 -2
  207. gcore/types/storage/credential_recreate_params.py +0 -17
  208. gcore/types/storage/storage.py +1 -1
  209. gcore/types/storage/storage_create_params.py +1 -1
  210. gcore/types/streaming/stream.py +3 -2
  211. gcore/types/streaming/video.py +1 -1
  212. gcore/types/waap/domains/custom_rule_create_params.py +1 -1
  213. gcore/types/waap/domains/custom_rule_update_params.py +1 -1
  214. gcore/types/waap/domains/waap_custom_rule.py +1 -1
  215. {gcore-0.16.0.dist-info → gcore-0.23.0.dist-info}/METADATA +14 -14
  216. {gcore-0.16.0.dist-info → gcore-0.23.0.dist-info}/RECORD +219 -168
  217. gcore/resources/cdn/logs/__init__.py +0 -19
  218. /gcore/types/{cdn/logs → cloud/databases}/__init__.py +0 -0
  219. {gcore-0.16.0.dist-info → gcore-0.23.0.dist-info}/WHEEL +0 -0
  220. {gcore-0.16.0.dist-info → gcore-0.23.0.dist-info}/licenses/LICENSE +0 -0
@@ -0,0 +1,189 @@
1
+ # File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
2
+
3
+ from typing import List, Union, Optional
4
+ from datetime import datetime
5
+ from typing_extensions import Literal, Annotated, TypeAlias
6
+
7
+ from .tag import Tag
8
+ from ..._utils import PropertyInfo
9
+ from ..._models import BaseModel
10
+
11
+ __all__ = [
12
+ "GPUVirtualCluster",
13
+ "ServersSettings",
14
+ "ServersSettingsFileShare",
15
+ "ServersSettingsInterface",
16
+ "ServersSettingsInterfaceExternalInterfaceOutputSerializer",
17
+ "ServersSettingsInterfaceSubnetInterfaceOutputSerializer",
18
+ "ServersSettingsInterfaceSubnetInterfaceOutputSerializerFloatingIP",
19
+ "ServersSettingsInterfaceAnySubnetInterfaceOutputSerializer",
20
+ "ServersSettingsInterfaceAnySubnetInterfaceOutputSerializerFloatingIP",
21
+ "ServersSettingsSecurityGroup",
22
+ "ServersSettingsVolume",
23
+ ]
24
+
25
+
26
+ class ServersSettingsFileShare(BaseModel):
27
+ id: str
28
+ """Unique identifier of the file share in UUID format."""
29
+
30
+ mount_path: str
31
+ """Absolute mount path inside the system where the file share will be mounted."""
32
+
33
+
34
+ class ServersSettingsInterfaceExternalInterfaceOutputSerializer(BaseModel):
35
+ ip_family: Literal["dual", "ipv4", "ipv6"]
36
+ """Which subnets should be selected: IPv4, IPv6, or use dual stack."""
37
+
38
+ name: Optional[str] = None
39
+ """Interface name"""
40
+
41
+ type: Literal["external"]
42
+
43
+
44
+ class ServersSettingsInterfaceSubnetInterfaceOutputSerializerFloatingIP(BaseModel):
45
+ source: Literal["new"]
46
+
47
+
48
+ class ServersSettingsInterfaceSubnetInterfaceOutputSerializer(BaseModel):
49
+ floating_ip: Optional[ServersSettingsInterfaceSubnetInterfaceOutputSerializerFloatingIP] = None
50
+ """Floating IP config for this subnet attachment"""
51
+
52
+ name: Optional[str] = None
53
+ """Interface name"""
54
+
55
+ network_id: str
56
+ """Network ID the subnet belongs to. Port will be plugged in this network"""
57
+
58
+ subnet_id: str
59
+ """Port is assigned an IP address from this subnet"""
60
+
61
+ type: Literal["subnet"]
62
+
63
+
64
+ class ServersSettingsInterfaceAnySubnetInterfaceOutputSerializerFloatingIP(BaseModel):
65
+ source: Literal["new"]
66
+
67
+
68
+ class ServersSettingsInterfaceAnySubnetInterfaceOutputSerializer(BaseModel):
69
+ floating_ip: Optional[ServersSettingsInterfaceAnySubnetInterfaceOutputSerializerFloatingIP] = None
70
+ """Floating IP config for this subnet attachment"""
71
+
72
+ ip_address: Optional[str] = None
73
+ """Fixed IP address"""
74
+
75
+ ip_family: Literal["dual", "ipv4", "ipv6"]
76
+ """Which subnets should be selected: IPv4, IPv6, or use dual stack"""
77
+
78
+ name: Optional[str] = None
79
+ """Interface name"""
80
+
81
+ network_id: str
82
+ """Network ID the subnet belongs to. Port will be plugged in this network"""
83
+
84
+ type: Literal["any_subnet"]
85
+
86
+
87
+ ServersSettingsInterface: TypeAlias = Annotated[
88
+ Union[
89
+ ServersSettingsInterfaceExternalInterfaceOutputSerializer,
90
+ ServersSettingsInterfaceSubnetInterfaceOutputSerializer,
91
+ ServersSettingsInterfaceAnySubnetInterfaceOutputSerializer,
92
+ ],
93
+ PropertyInfo(discriminator="type"),
94
+ ]
95
+
96
+
97
+ class ServersSettingsSecurityGroup(BaseModel):
98
+ id: str
99
+ """Security group ID"""
100
+
101
+ name: str
102
+ """Security group name"""
103
+
104
+
105
+ class ServersSettingsVolume(BaseModel):
106
+ boot_index: Optional[int] = None
107
+ """Boot index of the volume"""
108
+
109
+ delete_on_termination: bool
110
+ """Flag indicating whether the volume is deleted on instance termination"""
111
+
112
+ image_id: Optional[str] = None
113
+ """Image ID for the volume"""
114
+
115
+ name: str
116
+ """Volume name"""
117
+
118
+ size: int
119
+ """Volume size in GiB"""
120
+
121
+ tags: List[Tag]
122
+ """List of key-value tags associated with the resource.
123
+
124
+ A tag is a key-value pair that can be associated with a resource, enabling
125
+ efficient filtering and grouping for better organization and management. Some
126
+ tags are read-only and cannot be modified by the user. Tags are also integrated
127
+ with cost reports, allowing cost data to be filtered based on tag keys or
128
+ values.
129
+ """
130
+
131
+ type: Literal["cold", "ssd_hiiops", "ssd_local", "ssd_lowlatency", "standard", "ultra"]
132
+ """Volume type"""
133
+
134
+
135
+ class ServersSettings(BaseModel):
136
+ file_shares: List[ServersSettingsFileShare]
137
+ """List of file shares mounted across the cluster."""
138
+
139
+ interfaces: List[ServersSettingsInterface]
140
+
141
+ security_groups: List[ServersSettingsSecurityGroup]
142
+ """Security groups"""
143
+
144
+ ssh_key_name: Optional[str] = None
145
+ """SSH key name"""
146
+
147
+ user_data: Optional[str] = None
148
+ """Optional custom user data"""
149
+
150
+ volumes: List[ServersSettingsVolume]
151
+ """List of volumes"""
152
+
153
+
154
+ class GPUVirtualCluster(BaseModel):
155
+ id: str
156
+ """Cluster unique identifier"""
157
+
158
+ created_at: datetime
159
+ """Cluster creation date time"""
160
+
161
+ flavor: str
162
+ """Cluster flavor name"""
163
+
164
+ name: str
165
+ """Cluster name"""
166
+
167
+ servers_count: int
168
+ """Cluster servers count"""
169
+
170
+ servers_ids: List[str]
171
+ """List of cluster nodes"""
172
+
173
+ servers_settings: ServersSettings
174
+
175
+ status: Literal["active", "deleting", "error", "new", "resizing"]
176
+ """Cluster status"""
177
+
178
+ tags: List[Tag]
179
+ """List of key-value tags associated with the resource.
180
+
181
+ A tag is a key-value pair that can be associated with a resource, enabling
182
+ efficient filtering and grouping for better organization and management. Some
183
+ tags are read-only and cannot be modified by the user. Tags are also integrated
184
+ with cost reports, allowing cost data to be filtered based on tag keys or
185
+ values.
186
+ """
187
+
188
+ updated_at: Optional[datetime] = None
189
+ """Cluster update date time"""
@@ -0,0 +1,127 @@
1
+ # File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
2
+
3
+ from __future__ import annotations
4
+
5
+ from typing import Union, Optional
6
+ from typing_extensions import Literal, Required, TypeAlias, TypedDict
7
+
8
+ from .tag_update_map_param import TagUpdateMapParam
9
+
10
+ __all__ = [
11
+ "GPUVirtualClusterActionParams",
12
+ "StartVirtualGPUClusterSerializer",
13
+ "StopVirtualGPUClusterSerializer",
14
+ "SoftRebootVirtualGPUClusterSerializer",
15
+ "HardRebootVirtualGPUClusterSerializer",
16
+ "UpdateTagsGPUClusterSerializer",
17
+ "ResizeVirtualGPUClusterSerializer",
18
+ ]
19
+
20
+
21
+ class StartVirtualGPUClusterSerializer(TypedDict, total=False):
22
+ project_id: int
23
+ """Project ID"""
24
+
25
+ region_id: int
26
+ """Region ID"""
27
+
28
+ action: Required[Literal["start"]]
29
+ """Action name"""
30
+
31
+
32
+ class StopVirtualGPUClusterSerializer(TypedDict, total=False):
33
+ project_id: int
34
+ """Project ID"""
35
+
36
+ region_id: int
37
+ """Region ID"""
38
+
39
+ action: Required[Literal["stop"]]
40
+ """Action name"""
41
+
42
+
43
+ class SoftRebootVirtualGPUClusterSerializer(TypedDict, total=False):
44
+ project_id: int
45
+ """Project ID"""
46
+
47
+ region_id: int
48
+ """Region ID"""
49
+
50
+ action: Required[Literal["soft_reboot"]]
51
+ """Action name"""
52
+
53
+
54
+ class HardRebootVirtualGPUClusterSerializer(TypedDict, total=False):
55
+ project_id: int
56
+ """Project ID"""
57
+
58
+ region_id: int
59
+ """Region ID"""
60
+
61
+ action: Required[Literal["hard_reboot"]]
62
+ """Action name"""
63
+
64
+
65
+ class UpdateTagsGPUClusterSerializer(TypedDict, total=False):
66
+ project_id: int
67
+ """Project ID"""
68
+
69
+ region_id: int
70
+ """Region ID"""
71
+
72
+ action: Required[Literal["update_tags"]]
73
+ """Action name"""
74
+
75
+ tags: Required[Optional[TagUpdateMapParam]]
76
+ """Update key-value tags using JSON Merge Patch semantics (RFC 7386).
77
+
78
+ Provide key-value pairs to add or update tags. Set tag values to `null` to
79
+ remove tags. Unspecified tags remain unchanged. Read-only tags are always
80
+ preserved and cannot be modified.
81
+
82
+ **Examples:**
83
+
84
+ - **Add/update tags:**
85
+ `{'tags': {'environment': 'production', 'team': 'backend'}}` adds new tags or
86
+ updates existing ones.
87
+
88
+ - **Delete tags:** `{'tags': {'old_tag': null}}` removes specific tags.
89
+
90
+ - **Remove all tags:** `{'tags': null}` removes all user-managed tags (read-only
91
+ tags are preserved).
92
+
93
+ - **Partial update:** `{'tags': {'environment': 'staging'}}` only updates
94
+ specified tags.
95
+
96
+ - **Mixed operations:**
97
+ `{'tags': {'environment': 'production', 'cost_center': 'engineering', 'deprecated_tag': null}}`
98
+ adds/updates 'environment' and '`cost_center`' while removing
99
+ '`deprecated_tag`', preserving other existing tags.
100
+
101
+ - **Replace all:** first delete existing tags with null values, then add new
102
+ ones in the same request.
103
+ """
104
+
105
+
106
+ class ResizeVirtualGPUClusterSerializer(TypedDict, total=False):
107
+ project_id: int
108
+ """Project ID"""
109
+
110
+ region_id: int
111
+ """Region ID"""
112
+
113
+ action: Required[Literal["resize"]]
114
+ """Action name"""
115
+
116
+ servers_count: Required[int]
117
+ """Requested servers count"""
118
+
119
+
120
+ GPUVirtualClusterActionParams: TypeAlias = Union[
121
+ StartVirtualGPUClusterSerializer,
122
+ StopVirtualGPUClusterSerializer,
123
+ SoftRebootVirtualGPUClusterSerializer,
124
+ HardRebootVirtualGPUClusterSerializer,
125
+ UpdateTagsGPUClusterSerializer,
126
+ ResizeVirtualGPUClusterSerializer,
127
+ ]
@@ -0,0 +1,213 @@
1
+ # File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
2
+
3
+ from __future__ import annotations
4
+
5
+ from typing import Dict, Union, Iterable
6
+ from typing_extensions import Literal, Required, TypeAlias, TypedDict
7
+
8
+ __all__ = [
9
+ "GPUVirtualClusterCreateParams",
10
+ "ServersSettings",
11
+ "ServersSettingsInterface",
12
+ "ServersSettingsInterfaceExternalInterfaceInputSerializer",
13
+ "ServersSettingsInterfaceSubnetInterfaceInputSerializer",
14
+ "ServersSettingsInterfaceSubnetInterfaceInputSerializerFloatingIP",
15
+ "ServersSettingsInterfaceAnySubnetInterfaceInputSerializer",
16
+ "ServersSettingsInterfaceAnySubnetInterfaceInputSerializerFloatingIP",
17
+ "ServersSettingsVolume",
18
+ "ServersSettingsVolumeNewVolumeInputSerializer",
19
+ "ServersSettingsVolumeImageVolumeInputSerializer",
20
+ "ServersSettingsCredentials",
21
+ "ServersSettingsFileShare",
22
+ "ServersSettingsSecurityGroup",
23
+ ]
24
+
25
+
26
+ class GPUVirtualClusterCreateParams(TypedDict, total=False):
27
+ project_id: int
28
+ """Project ID"""
29
+
30
+ region_id: int
31
+ """Region ID"""
32
+
33
+ flavor: Required[str]
34
+ """Cluster flavor ID"""
35
+
36
+ name: Required[str]
37
+ """Cluster name"""
38
+
39
+ servers_count: Required[int]
40
+ """Number of servers in the cluster"""
41
+
42
+ servers_settings: Required[ServersSettings]
43
+ """Configuration settings for the servers in the cluster"""
44
+
45
+ tags: Dict[str, str]
46
+ """Key-value tags to associate with the resource.
47
+
48
+ A tag is a key-value pair that can be associated with a resource, enabling
49
+ efficient filtering and grouping for better organization and management. Both
50
+ tag keys and values have a maximum length of 255 characters. Some tags are
51
+ read-only and cannot be modified by the user. Tags are also integrated with cost
52
+ reports, allowing cost data to be filtered based on tag keys or values.
53
+ """
54
+
55
+
56
+ class ServersSettingsInterfaceExternalInterfaceInputSerializer(TypedDict, total=False):
57
+ type: Required[Literal["external"]]
58
+
59
+ ip_family: Literal["dual", "ipv4", "ipv6"]
60
+ """Which subnets should be selected: IPv4, IPv6, or use dual stack."""
61
+
62
+ name: str
63
+ """Interface name"""
64
+
65
+
66
+ class ServersSettingsInterfaceSubnetInterfaceInputSerializerFloatingIP(TypedDict, total=False):
67
+ source: Required[Literal["new"]]
68
+
69
+
70
+ class ServersSettingsInterfaceSubnetInterfaceInputSerializer(TypedDict, total=False):
71
+ network_id: Required[str]
72
+ """Network ID the subnet belongs to. Port will be plugged in this network"""
73
+
74
+ subnet_id: Required[str]
75
+ """Port is assigned an IP address from this subnet"""
76
+
77
+ type: Required[Literal["subnet"]]
78
+
79
+ floating_ip: ServersSettingsInterfaceSubnetInterfaceInputSerializerFloatingIP
80
+ """Floating IP config for this subnet attachment"""
81
+
82
+ name: str
83
+ """Interface name"""
84
+
85
+
86
+ class ServersSettingsInterfaceAnySubnetInterfaceInputSerializerFloatingIP(TypedDict, total=False):
87
+ source: Required[Literal["new"]]
88
+
89
+
90
+ class ServersSettingsInterfaceAnySubnetInterfaceInputSerializer(TypedDict, total=False):
91
+ network_id: Required[str]
92
+ """Network ID the subnet belongs to. Port will be plugged in this network"""
93
+
94
+ type: Required[Literal["any_subnet"]]
95
+
96
+ floating_ip: ServersSettingsInterfaceAnySubnetInterfaceInputSerializerFloatingIP
97
+ """Floating IP config for this subnet attachment"""
98
+
99
+ ip_family: Literal["dual", "ipv4", "ipv6"]
100
+ """Which subnets should be selected: IPv4, IPv6, or use dual stack"""
101
+
102
+ name: str
103
+ """Interface name"""
104
+
105
+
106
+ ServersSettingsInterface: TypeAlias = Union[
107
+ ServersSettingsInterfaceExternalInterfaceInputSerializer,
108
+ ServersSettingsInterfaceSubnetInterfaceInputSerializer,
109
+ ServersSettingsInterfaceAnySubnetInterfaceInputSerializer,
110
+ ]
111
+
112
+
113
+ class ServersSettingsVolumeNewVolumeInputSerializer(TypedDict, total=False):
114
+ boot_index: Required[int]
115
+ """Boot index of the volume"""
116
+
117
+ name: Required[str]
118
+ """Volume name"""
119
+
120
+ size: Required[int]
121
+ """Volume size in GiB"""
122
+
123
+ source: Required[Literal["new"]]
124
+
125
+ type: Required[Literal["cold", "ssd_hiiops", "ssd_local", "ssd_lowlatency", "standard", "ultra"]]
126
+ """Volume type"""
127
+
128
+ delete_on_termination: bool
129
+ """Flag indicating whether the volume is deleted on instance termination"""
130
+
131
+ tags: Dict[str, str]
132
+ """Tags associated with the volume"""
133
+
134
+
135
+ class ServersSettingsVolumeImageVolumeInputSerializer(TypedDict, total=False):
136
+ boot_index: Required[int]
137
+ """Boot index of the volume"""
138
+
139
+ image_id: Required[str]
140
+ """Image ID for the volume"""
141
+
142
+ name: Required[str]
143
+ """Volume name"""
144
+
145
+ size: Required[int]
146
+ """Volume size in GiB"""
147
+
148
+ source: Required[Literal["image"]]
149
+
150
+ type: Required[Literal["cold", "ssd_hiiops", "ssd_local", "ssd_lowlatency", "standard", "ultra"]]
151
+ """Volume type"""
152
+
153
+ delete_on_termination: bool
154
+ """Flag indicating whether the volume is deleted on instance termination"""
155
+
156
+ tags: Dict[str, str]
157
+ """Tags associated with the volume"""
158
+
159
+
160
+ ServersSettingsVolume: TypeAlias = Union[
161
+ ServersSettingsVolumeNewVolumeInputSerializer, ServersSettingsVolumeImageVolumeInputSerializer
162
+ ]
163
+
164
+
165
+ class ServersSettingsCredentials(TypedDict, total=False):
166
+ password: str
167
+ """Used to set the password for the specified 'username' on Linux instances.
168
+
169
+ If 'username' is not provided, the password is applied to the default user of
170
+ the image. Mutually exclusive with '`user_data`' - only one can be specified.
171
+ """
172
+
173
+ ssh_key_name: str
174
+ """
175
+ Specifies the name of the SSH keypair, created via the
176
+ [/v1/`ssh_keys` endpoint](/docs/api-reference/cloud/ssh-keys/add-or-generate-ssh-key).
177
+ """
178
+
179
+ username: str
180
+ """The 'username' and 'password' fields create a new user on the system"""
181
+
182
+
183
+ class ServersSettingsFileShare(TypedDict, total=False):
184
+ id: Required[str]
185
+ """Unique identifier of the file share in UUID format."""
186
+
187
+ mount_path: Required[str]
188
+ """Absolute mount path inside the system where the file share will be mounted."""
189
+
190
+
191
+ class ServersSettingsSecurityGroup(TypedDict, total=False):
192
+ id: Required[str]
193
+ """Resource ID"""
194
+
195
+
196
+ class ServersSettings(TypedDict, total=False):
197
+ interfaces: Required[Iterable[ServersSettingsInterface]]
198
+ """Subnet IPs and floating IPs"""
199
+
200
+ volumes: Required[Iterable[ServersSettingsVolume]]
201
+ """List of volumes"""
202
+
203
+ credentials: ServersSettingsCredentials
204
+ """Optional server access credentials"""
205
+
206
+ file_shares: Iterable[ServersSettingsFileShare]
207
+ """List of file shares to be mounted across the cluster."""
208
+
209
+ security_groups: Iterable[ServersSettingsSecurityGroup]
210
+ """List of security groups UUIDs"""
211
+
212
+ user_data: str
213
+ """Optional custom user data (Base64-encoded)"""
@@ -0,0 +1,41 @@
1
+ # File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
2
+
3
+ from __future__ import annotations
4
+
5
+ from typing_extensions import TypedDict
6
+
7
+ from ..._types import SequenceNotStr
8
+
9
+ __all__ = ["GPUVirtualClusterDeleteParams"]
10
+
11
+
12
+ class GPUVirtualClusterDeleteParams(TypedDict, total=False):
13
+ project_id: int
14
+ """Project ID"""
15
+
16
+ region_id: int
17
+ """Region ID"""
18
+
19
+ all_floating_ips: bool
20
+ """
21
+ Flag indicating whether the floating ips associated with server / cluster are
22
+ deleted
23
+ """
24
+
25
+ all_reserved_fixed_ips: bool
26
+ """
27
+ Flag indicating whether the reserved fixed ips associated with server / cluster
28
+ are deleted
29
+ """
30
+
31
+ all_volumes: bool
32
+ """Flag indicating whether all attached volumes are deleted"""
33
+
34
+ floating_ip_ids: SequenceNotStr[str]
35
+ """Optional list of floating ips to be deleted"""
36
+
37
+ reserved_fixed_ip_ids: SequenceNotStr[str]
38
+ """Optional list of reserved fixed ips to be deleted"""
39
+
40
+ volume_ids: SequenceNotStr[str]
41
+ """Optional list of volumes to be deleted"""
@@ -0,0 +1,21 @@
1
+ # File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
2
+
3
+ from __future__ import annotations
4
+
5
+ from typing_extensions import TypedDict
6
+
7
+ __all__ = ["GPUVirtualClusterListParams"]
8
+
9
+
10
+ class GPUVirtualClusterListParams(TypedDict, total=False):
11
+ project_id: int
12
+ """Project ID"""
13
+
14
+ region_id: int
15
+ """Region ID"""
16
+
17
+ limit: int
18
+ """Limit of items on a single page"""
19
+
20
+ offset: int
21
+ """Offset in results list"""
@@ -0,0 +1,18 @@
1
+ # File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
2
+
3
+ from __future__ import annotations
4
+
5
+ from typing_extensions import Required, TypedDict
6
+
7
+ __all__ = ["GPUVirtualClusterUpdateParams"]
8
+
9
+
10
+ class GPUVirtualClusterUpdateParams(TypedDict, total=False):
11
+ project_id: int
12
+ """Project ID"""
13
+
14
+ region_id: int
15
+ """Region ID"""
16
+
17
+ name: Required[str]
18
+ """Cluster name"""
@@ -0,0 +1,16 @@
1
+ # File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
2
+
3
+ from __future__ import annotations
4
+
5
+ from .flavor_list_params import FlavorListParams as FlavorListParams
6
+ from .gpu_virtual_flavor import GPUVirtualFlavor as GPUVirtualFlavor
7
+ from .server_list_params import ServerListParams as ServerListParams
8
+ from .image_upload_params import ImageUploadParams as ImageUploadParams
9
+ from .server_delete_params import ServerDeleteParams as ServerDeleteParams
10
+ from .gpu_virtual_interface import GPUVirtualInterface as GPUVirtualInterface
11
+ from .gpu_virtual_flavor_list import GPUVirtualFlavorList as GPUVirtualFlavorList
12
+ from .gpu_virtual_cluster_server import GPUVirtualClusterServer as GPUVirtualClusterServer
13
+ from .gpu_virtual_cluster_volume import GPUVirtualClusterVolume as GPUVirtualClusterVolume
14
+ from .gpu_virtual_interface_list import GPUVirtualInterfaceList as GPUVirtualInterfaceList
15
+ from .gpu_virtual_cluster_server_list import GPUVirtualClusterServerList as GPUVirtualClusterServerList
16
+ from .gpu_virtual_cluster_volume_list import GPUVirtualClusterVolumeList as GPUVirtualClusterVolumeList
@@ -0,0 +1,21 @@
1
+ # File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
2
+
3
+ from __future__ import annotations
4
+
5
+ from typing_extensions import TypedDict
6
+
7
+ __all__ = ["FlavorListParams"]
8
+
9
+
10
+ class FlavorListParams(TypedDict, total=False):
11
+ project_id: int
12
+ """Project ID"""
13
+
14
+ region_id: int
15
+ """Region ID"""
16
+
17
+ hide_disabled: bool
18
+ """Set to `true` to remove the disabled flavors from the response."""
19
+
20
+ include_prices: bool
21
+ """Set to `true` if the response should include flavor prices."""