gcore 0.1.0a2__py3-none-any.whl → 0.3.0__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of gcore might be problematic. Click here for more details.
- gcore/__init__.py +5 -0
- gcore/_base_client.py +22 -2
- gcore/_client.py +9 -0
- gcore/_models.py +2 -0
- gcore/_types.py +2 -0
- gcore/_utils/_proxy.py +4 -1
- gcore/_utils/_resources_proxy.py +24 -0
- gcore/_version.py +1 -1
- gcore/resources/__init__.py +14 -0
- gcore/resources/cloud/baremetal/flavors.py +2 -2
- gcore/resources/cloud/baremetal/images.py +2 -2
- gcore/resources/cloud/baremetal/servers.py +280 -52
- gcore/resources/cloud/billing_reservations.py +24 -0
- gcore/resources/cloud/file_shares/file_shares.py +16 -0
- gcore/resources/cloud/floating_ips.py +4 -4
- gcore/resources/cloud/gpu_baremetal_clusters/gpu_baremetal_clusters.py +358 -8
- gcore/resources/cloud/gpu_baremetal_clusters/images.py +206 -2
- gcore/resources/cloud/gpu_baremetal_clusters/servers.py +84 -4
- gcore/resources/cloud/inference/deployments/deployments.py +328 -10
- gcore/resources/cloud/instances/flavors.py +2 -2
- gcore/resources/cloud/instances/images.py +318 -2
- gcore/resources/cloud/instances/instances.py +534 -70
- gcore/resources/cloud/instances/interfaces.py +4 -4
- gcore/resources/cloud/load_balancers/flavors.py +2 -2
- gcore/resources/cloud/load_balancers/l7_policies/l7_policies.py +302 -20
- gcore/resources/cloud/load_balancers/l7_policies/rules.py +326 -0
- gcore/resources/cloud/load_balancers/listeners.py +385 -20
- gcore/resources/cloud/load_balancers/load_balancers.py +392 -24
- gcore/resources/cloud/load_balancers/pools/health_monitors.py +24 -0
- gcore/resources/cloud/load_balancers/pools/members.py +34 -6
- gcore/resources/cloud/load_balancers/pools/pools.py +388 -8
- gcore/resources/cloud/networks/networks.py +72 -16
- gcore/resources/cloud/networks/subnets.py +6 -6
- gcore/resources/cloud/registries/registries.py +6 -10
- gcore/resources/cloud/registries/users.py +4 -10
- gcore/resources/cloud/reserved_fixed_ips/reserved_fixed_ips.py +10 -10
- gcore/resources/cloud/secrets.py +56 -11
- gcore/resources/cloud/security_groups/security_groups.py +2 -2
- gcore/resources/cloud/ssh_keys.py +2 -2
- gcore/resources/cloud/tasks.py +203 -184
- gcore/resources/cloud/users/role_assignments.py +4 -4
- gcore/resources/cloud/volumes.py +18 -18
- gcore/resources/waap/__init__.py +131 -0
- gcore/resources/waap/advanced_rules.py +135 -0
- gcore/resources/waap/clients.py +135 -0
- gcore/resources/waap/custom_page_sets.py +805 -0
- gcore/resources/waap/domains/__init__.py +173 -0
- gcore/resources/waap/domains/advanced_rules.py +876 -0
- gcore/resources/waap/domains/analytics/__init__.py +33 -0
- gcore/resources/waap/domains/analytics/analytics.py +676 -0
- gcore/resources/waap/domains/analytics/requests.py +378 -0
- gcore/resources/waap/domains/api_discovery/__init__.py +33 -0
- gcore/resources/waap/domains/api_discovery/api_discovery.py +530 -0
- gcore/resources/waap/domains/api_discovery/scan_results.py +352 -0
- gcore/resources/waap/domains/api_path_groups.py +163 -0
- gcore/resources/waap/domains/api_paths.py +771 -0
- gcore/resources/waap/domains/custom_rules.py +889 -0
- gcore/resources/waap/domains/domains.py +914 -0
- gcore/resources/waap/domains/firewall_rules.py +884 -0
- gcore/resources/waap/domains/insight_silences.py +689 -0
- gcore/resources/waap/domains/insights.py +425 -0
- gcore/resources/waap/domains/policies.py +173 -0
- gcore/resources/waap/domains/settings.py +271 -0
- gcore/resources/waap/ip_info.py +1017 -0
- gcore/resources/waap/organizations.py +217 -0
- gcore/resources/waap/statistics.py +225 -0
- gcore/resources/waap/tags.py +233 -0
- gcore/resources/waap/waap.py +391 -0
- gcore/types/cloud/__init__.py +1 -0
- gcore/types/cloud/allowed_address_pairs.py +2 -2
- gcore/types/cloud/baremetal/baremetal_server.py +1 -1
- gcore/types/cloud/baremetal/image_list_params.py +1 -1
- gcore/types/cloud/baremetal/server_create_params.py +9 -9
- gcore/types/cloud/baremetal/server_list_params.py +8 -8
- gcore/types/cloud/baremetal/server_rebuild_params.py +1 -1
- gcore/types/cloud/baremetal_flavor.py +3 -3
- gcore/types/cloud/billing_reservation_list_params.py +5 -0
- gcore/types/cloud/container_probe_config.py +1 -1
- gcore/types/cloud/container_probe_config_create_param.py +2 -3
- gcore/types/cloud/container_scale_triggers.py +2 -2
- gcore/types/cloud/file_share.py +3 -0
- gcore/types/cloud/file_share_list_params.py +7 -1
- gcore/types/cloud/floating_ip_detailed.py +1 -1
- gcore/types/cloud/floating_ip_list_params.py +2 -2
- gcore/types/cloud/gpu_baremetal_cluster.py +1 -1
- gcore/types/cloud/gpu_baremetal_cluster_create_params.py +21 -1
- gcore/types/cloud/gpu_baremetal_cluster_delete_params.py +1 -1
- gcore/types/cloud/gpu_baremetal_cluster_rebuild_params.py +1 -1
- gcore/types/cloud/gpu_baremetal_cluster_server.py +1 -1
- gcore/types/cloud/gpu_baremetal_clusters/image_upload_params.py +1 -1
- gcore/types/cloud/gpu_baremetal_clusters/server_attach_interface_params.py +10 -10
- gcore/types/cloud/gpu_baremetal_flavor.py +3 -3
- gcore/types/cloud/image.py +1 -1
- gcore/types/cloud/inference/deployment_create_params.py +4 -4
- gcore/types/cloud/inference/deployment_update_params.py +206 -9
- gcore/types/cloud/inference/inference.py +5 -5
- gcore/types/cloud/instance.py +1 -1
- gcore/types/cloud/instance_create_params.py +8 -10
- gcore/types/cloud/instance_list_params.py +8 -8
- gcore/types/cloud/instances/flavor_list_suitable_params.py +4 -1
- gcore/types/cloud/instances/image_list_params.py +1 -1
- gcore/types/cloud/instances/instance_flavor.py +3 -3
- gcore/types/cloud/instances/interface_attach_params.py +10 -10
- gcore/types/cloud/load_balancer_create_params.py +17 -15
- gcore/types/cloud/load_balancer_flavor_detail.py +3 -3
- gcore/types/cloud/load_balancer_l7_policy.py +5 -5
- gcore/types/cloud/load_balancer_list_params.py +5 -5
- gcore/types/cloud/load_balancer_listener_detail.py +17 -17
- gcore/types/cloud/load_balancer_pool.py +13 -13
- gcore/types/cloud/load_balancer_pool_list.py +99 -4
- gcore/types/cloud/load_balancers/l7_policy_create_params.py +5 -5
- gcore/types/cloud/load_balancers/l7_policy_replace_params.py +5 -5
- gcore/types/cloud/load_balancers/listener_create_params.py +6 -4
- gcore/types/cloud/load_balancers/listener_get_params.py +3 -1
- gcore/types/cloud/load_balancers/listener_list_params.py +4 -2
- gcore/types/cloud/load_balancers/listener_update_params.py +5 -3
- gcore/types/cloud/load_balancers/pool_create_params.py +6 -4
- gcore/types/cloud/load_balancers/pool_list_params.py +5 -6
- gcore/types/cloud/load_balancers/pool_update_params.py +6 -4
- gcore/types/cloud/load_balancers/pools/health_monitor_create_params.py +2 -0
- gcore/types/cloud/load_balancers/pools/member_add_params.py +5 -3
- gcore/types/cloud/member.py +2 -2
- gcore/types/cloud/network.py +22 -22
- gcore/types/cloud/network_create_params.py +2 -0
- gcore/types/cloud/network_details.py +25 -24
- gcore/types/cloud/network_list_params.py +15 -10
- gcore/types/cloud/network_update_params.py +2 -0
- gcore/types/cloud/networks/subnet_create_params.py +1 -1
- gcore/types/cloud/networks/subnet_list_params.py +2 -2
- gcore/types/cloud/quota_get_all_response.py +18 -0
- gcore/types/cloud/quota_get_by_region_response.py +18 -0
- gcore/types/cloud/quotas/request_create_params.py +9 -0
- gcore/types/cloud/quotas/request_get_response.py +9 -0
- gcore/types/cloud/quotas/request_list_response.py +9 -0
- gcore/types/cloud/region.py +4 -4
- gcore/types/cloud/registries/user_create_multiple_params.py +3 -5
- gcore/types/cloud/registries/user_create_params.py +3 -5
- gcore/types/cloud/registry_create_params.py +3 -5
- gcore/types/cloud/reserved_fixed_ip_create_params.py +2 -2
- gcore/types/cloud/reserved_fixed_ip_list_params.py +3 -3
- gcore/types/cloud/secret_list_params.py +24 -0
- gcore/types/cloud/security_group_list_params.py +1 -1
- gcore/types/cloud/session_persistence.py +1 -1
- gcore/types/cloud/ssh_key_created.py +3 -6
- gcore/types/cloud/task.py +1 -4
- gcore/types/cloud/task_list_params.py +56 -46
- gcore/types/cloud/users/role_assignment_create_params.py +1 -1
- gcore/types/cloud/users/role_assignment_update_params.py +1 -1
- gcore/types/cloud/volume_create_params.py +6 -6
- gcore/types/cloud/volume_list_params.py +3 -3
- gcore/types/waap/__init__.py +108 -0
- gcore/types/waap/client_me_response.py +34 -0
- gcore/types/waap/custom_page_set_create_params.py +35 -0
- gcore/types/waap/custom_page_set_list_params.py +25 -0
- gcore/types/waap/custom_page_set_preview_params.py +34 -0
- gcore/types/waap/custom_page_set_update_params.py +35 -0
- gcore/types/waap/domain_list_params.py +30 -0
- gcore/types/waap/domain_list_rule_sets_response.py +10 -0
- gcore/types/waap/domain_update_params.py +12 -0
- gcore/types/waap/domains/__init__.py +47 -0
- gcore/types/waap/domains/advanced_rule_create_params.py +80 -0
- gcore/types/waap/domains/advanced_rule_list_params.py +58 -0
- gcore/types/waap/domains/advanced_rule_update_params.py +83 -0
- gcore/types/waap/domains/analytics/__init__.py +5 -0
- gcore/types/waap/domains/analytics/request_list_params.py +53 -0
- gcore/types/waap/domains/analytics_get_event_statistics_params.py +34 -0
- gcore/types/waap/domains/analytics_list_ddos_attacks_params.py +28 -0
- gcore/types/waap/domains/analytics_list_ddos_info_params.py +31 -0
- gcore/types/waap/domains/analytics_list_event_traffic_params.py +26 -0
- gcore/types/waap/domains/analytics_list_event_traffic_response.py +10 -0
- gcore/types/waap/domains/api_discovery/__init__.py +7 -0
- gcore/types/waap/domains/api_discovery/scan_result_get_response.py +29 -0
- gcore/types/waap/domains/api_discovery/scan_result_list_params.py +41 -0
- gcore/types/waap/domains/api_discovery/scan_result_list_response.py +29 -0
- gcore/types/waap/domains/api_discovery_get_settings_response.py +36 -0
- gcore/types/waap/domains/api_discovery_scan_openapi_response.py +10 -0
- gcore/types/waap/domains/api_discovery_update_settings_params.py +34 -0
- gcore/types/waap/domains/api_discovery_update_settings_response.py +36 -0
- gcore/types/waap/domains/api_discovery_upload_openapi_params.py +19 -0
- gcore/types/waap/domains/api_discovery_upload_openapi_response.py +10 -0
- gcore/types/waap/domains/api_path_create_params.py +31 -0
- gcore/types/waap/domains/api_path_create_response.py +50 -0
- gcore/types/waap/domains/api_path_get_response.py +50 -0
- gcore/types/waap/domains/api_path_group_list_response.py +12 -0
- gcore/types/waap/domains/api_path_list_params.py +62 -0
- gcore/types/waap/domains/api_path_list_response.py +50 -0
- gcore/types/waap/domains/api_path_update_params.py +29 -0
- gcore/types/waap/domains/custom_rule_create_params.py +368 -0
- gcore/types/waap/domains/custom_rule_delete_multiple_params.py +13 -0
- gcore/types/waap/domains/custom_rule_list_params.py +35 -0
- gcore/types/waap/domains/custom_rule_update_params.py +371 -0
- gcore/types/waap/domains/firewall_rule_create_params.py +75 -0
- gcore/types/waap/domains/firewall_rule_delete_multiple_params.py +13 -0
- gcore/types/waap/domains/firewall_rule_list_params.py +33 -0
- gcore/types/waap/domains/firewall_rule_update_params.py +78 -0
- gcore/types/waap/domains/insight_list_params.py +34 -0
- gcore/types/waap/domains/insight_replace_params.py +17 -0
- gcore/types/waap/domains/insight_silence_create_params.py +28 -0
- gcore/types/waap/domains/insight_silence_list_params.py +33 -0
- gcore/types/waap/domains/insight_silence_update_params.py +28 -0
- gcore/types/waap/domains/setting_update_params.py +48 -0
- gcore/types/waap/ip_info_get_attack_time_series_params.py +12 -0
- gcore/types/waap/ip_info_get_attack_time_series_response.py +10 -0
- gcore/types/waap/ip_info_get_blocked_requests_params.py +15 -0
- gcore/types/waap/ip_info_get_blocked_requests_response.py +10 -0
- gcore/types/waap/ip_info_get_counts_params.py +19 -0
- gcore/types/waap/ip_info_get_ddos_attack_series_params.py +12 -0
- gcore/types/waap/ip_info_get_params.py +12 -0
- gcore/types/waap/ip_info_get_top_sessions_params.py +15 -0
- gcore/types/waap/ip_info_get_top_sessions_response.py +10 -0
- gcore/types/waap/ip_info_get_top_urls_params.py +15 -0
- gcore/types/waap/ip_info_get_top_urls_response.py +10 -0
- gcore/types/waap/ip_info_get_top_user_agents_params.py +15 -0
- gcore/types/waap/ip_info_get_top_user_agents_response.py +10 -0
- gcore/types/waap/ip_info_list_attacked_countries_params.py +12 -0
- gcore/types/waap/ip_info_list_attacked_countries_response.py +10 -0
- gcore/types/waap/organization_list_params.py +22 -0
- gcore/types/waap/statistic_get_usage_series_params.py +25 -0
- gcore/types/waap/tag_list_params.py +28 -0
- gcore/types/waap/waap_advanced_rule.py +83 -0
- gcore/types/waap/waap_advanced_rule_descriptor.py +49 -0
- gcore/types/waap/waap_advanced_rule_descriptor_list.py +15 -0
- gcore/types/waap/waap_block_csrf_page_data.py +28 -0
- gcore/types/waap/waap_block_csrf_page_data_param.py +28 -0
- gcore/types/waap/waap_block_page_data.py +28 -0
- gcore/types/waap/waap_block_page_data_param.py +28 -0
- gcore/types/waap/waap_blocked_statistics.py +36 -0
- gcore/types/waap/waap_captcha_page_data.py +31 -0
- gcore/types/waap/waap_captcha_page_data_param.py +31 -0
- gcore/types/waap/waap_common_tag.py +16 -0
- gcore/types/waap/waap_cookie_disabled_page_data.py +18 -0
- gcore/types/waap/waap_cookie_disabled_page_data_param.py +18 -0
- gcore/types/waap/waap_count_statistics.py +36 -0
- gcore/types/waap/waap_custom_page_preview.py +10 -0
- gcore/types/waap/waap_custom_page_set.py +36 -0
- gcore/types/waap/waap_custom_rule.py +373 -0
- gcore/types/waap/waap_customer_rule_state.py +7 -0
- gcore/types/waap/waap_ddos_attack.py +16 -0
- gcore/types/waap/waap_ddos_info.py +17 -0
- gcore/types/waap/waap_detailed_domain.py +37 -0
- gcore/types/waap/waap_domain_api_settings.py +22 -0
- gcore/types/waap/waap_domain_ddos_settings.py +31 -0
- gcore/types/waap/waap_domain_policy.py +29 -0
- gcore/types/waap/waap_domain_settings_model.py +15 -0
- gcore/types/waap/waap_domain_status.py +7 -0
- gcore/types/waap/waap_event_statistics.py +15 -0
- gcore/types/waap/waap_firewall_rule.py +78 -0
- gcore/types/waap/waap_get_account_overview_response.py +34 -0
- gcore/types/waap/waap_handshake_page_data.py +25 -0
- gcore/types/waap/waap_handshake_page_data_param.py +25 -0
- gcore/types/waap/waap_insight.py +38 -0
- gcore/types/waap/waap_insight_silence.py +28 -0
- gcore/types/waap/waap_insight_silence_sort_by.py +9 -0
- gcore/types/waap/waap_insight_sort_by.py +20 -0
- gcore/types/waap/waap_insight_status.py +7 -0
- gcore/types/waap/waap_ip_country_attack.py +16 -0
- gcore/types/waap/waap_ip_ddos_info_model.py +23 -0
- gcore/types/waap/waap_ip_info.py +57 -0
- gcore/types/waap/waap_ip_info_counts.py +16 -0
- gcore/types/waap/waap_javascript_disabled_page_data.py +18 -0
- gcore/types/waap/waap_javascript_disabled_page_data_param.py +18 -0
- gcore/types/waap/waap_network_details.py +17 -0
- gcore/types/waap/waap_organization.py +13 -0
- gcore/types/waap/waap_page_type.py +9 -0
- gcore/types/waap/waap_paginated_custom_page_set.py +22 -0
- gcore/types/waap/waap_paginated_ddos_attack.py +22 -0
- gcore/types/waap/waap_paginated_ddos_info.py +22 -0
- gcore/types/waap/waap_paginated_request_summary.py +22 -0
- gcore/types/waap/waap_pattern_matched_tag.py +37 -0
- gcore/types/waap/waap_policy_action.py +7 -0
- gcore/types/waap/waap_policy_mode.py +10 -0
- gcore/types/waap/waap_request_details.py +92 -0
- gcore/types/waap/waap_request_organization.py +13 -0
- gcore/types/waap/waap_request_summary.py +59 -0
- gcore/types/waap/waap_resolution.py +7 -0
- gcore/types/waap/waap_rule_action_type.py +7 -0
- gcore/types/waap/waap_rule_blocked_requests.py +16 -0
- gcore/types/waap/waap_rule_set.py +41 -0
- gcore/types/waap/waap_statistic_item.py +18 -0
- gcore/types/waap/waap_statistics_series.py +16 -0
- gcore/types/waap/waap_summary_domain.py +26 -0
- gcore/types/waap/waap_tag.py +16 -0
- gcore/types/waap/waap_time_series_attack.py +23 -0
- gcore/types/waap/waap_top_session.py +24 -0
- gcore/types/waap/waap_top_url.py +13 -0
- gcore/types/waap/waap_top_user_agent.py +13 -0
- gcore/types/waap/waap_traffic_metrics.py +68 -0
- gcore/types/waap/waap_traffic_type.py +28 -0
- gcore/types/waap/waap_user_agent_details.py +40 -0
- {gcore-0.1.0a2.dist-info → gcore-0.3.0.dist-info}/METADATA +3 -3
- {gcore-0.1.0a2.dist-info → gcore-0.3.0.dist-info}/RECORD +293 -126
- {gcore-0.1.0a2.dist-info → gcore-0.3.0.dist-info}/WHEEL +0 -0
- {gcore-0.1.0a2.dist-info → gcore-0.3.0.dist-info}/licenses/LICENSE +0 -0
|
@@ -111,8 +111,11 @@ class GPUBaremetalClustersResource(SyncAPIResource):
|
|
|
111
111
|
interfaces: Iterable[gpu_baremetal_cluster_create_params.Interface],
|
|
112
112
|
name: str,
|
|
113
113
|
instances_count: int | NotGiven = NOT_GIVEN,
|
|
114
|
+
password: str | NotGiven = NOT_GIVEN,
|
|
114
115
|
ssh_key_name: str | NotGiven = NOT_GIVEN,
|
|
115
116
|
tags: TagUpdateMapParam | NotGiven = NOT_GIVEN,
|
|
117
|
+
user_data: str | NotGiven = NOT_GIVEN,
|
|
118
|
+
username: str | NotGiven = NOT_GIVEN,
|
|
116
119
|
# Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
|
|
117
120
|
# The extra values given here take precedence over values defined on the client or passed to this method.
|
|
118
121
|
extra_headers: Headers | None = None,
|
|
@@ -135,8 +138,12 @@ class GPUBaremetalClustersResource(SyncAPIResource):
|
|
|
135
138
|
|
|
136
139
|
instances_count: Number of servers to create
|
|
137
140
|
|
|
141
|
+
password: A password for a bare metal server. This parameter is used to set a password for
|
|
142
|
+
the "Admin" user on a Windows instance, a default user or a new user on a Linux
|
|
143
|
+
instance
|
|
144
|
+
|
|
138
145
|
ssh_key_name: Specifies the name of the SSH keypair, created via the
|
|
139
|
-
|
|
146
|
+
[/v1/`ssh_keys` endpoint](/docs/api-reference/ssh-keys/add-or-generate-ssh-key).
|
|
140
147
|
|
|
141
148
|
tags: Key-value tags to associate with the resource. A tag is a key-value pair that
|
|
142
149
|
can be associated with a resource, enabling efficient filtering and grouping for
|
|
@@ -144,6 +151,13 @@ class GPUBaremetalClustersResource(SyncAPIResource):
|
|
|
144
151
|
modified by the user. Tags are also integrated with cost reports, allowing cost
|
|
145
152
|
data to be filtered based on tag keys or values.
|
|
146
153
|
|
|
154
|
+
user_data: String in base64 format. Must not be passed together with 'username' or
|
|
155
|
+
'password'. Examples of the `user_data`:
|
|
156
|
+
https://cloudinit.readthedocs.io/en/latest/topics/examples.html
|
|
157
|
+
|
|
158
|
+
username: A name of a new user in the Linux instance. It may be passed with a 'password'
|
|
159
|
+
parameter
|
|
160
|
+
|
|
147
161
|
extra_headers: Send extra headers
|
|
148
162
|
|
|
149
163
|
extra_query: Add additional query parameters to the request
|
|
@@ -165,8 +179,11 @@ class GPUBaremetalClustersResource(SyncAPIResource):
|
|
|
165
179
|
"interfaces": interfaces,
|
|
166
180
|
"name": name,
|
|
167
181
|
"instances_count": instances_count,
|
|
182
|
+
"password": password,
|
|
168
183
|
"ssh_key_name": ssh_key_name,
|
|
169
184
|
"tags": tags,
|
|
185
|
+
"user_data": user_data,
|
|
186
|
+
"username": username,
|
|
170
187
|
},
|
|
171
188
|
gpu_baremetal_cluster_create_params.GPUBaremetalClusterCreateParams,
|
|
172
189
|
),
|
|
@@ -253,7 +270,7 @@ class GPUBaremetalClustersResource(SyncAPIResource):
|
|
|
253
270
|
used with floatings.
|
|
254
271
|
|
|
255
272
|
floatings: Comma separated list of floating ids that should be deleted. Can't be used with
|
|
256
|
-
delete_floatings
|
|
273
|
+
`delete_floatings`.
|
|
257
274
|
|
|
258
275
|
reserved_fixed_ips: Comma separated list of port IDs to be deleted with the servers
|
|
259
276
|
|
|
@@ -432,7 +449,7 @@ class GPUBaremetalClustersResource(SyncAPIResource):
|
|
|
432
449
|
image_id: AI GPU image ID
|
|
433
450
|
|
|
434
451
|
user_data:
|
|
435
|
-
String in base64 format.Examples of the user_data
|
|
452
|
+
String in base64 format.Examples of the `user_data`:
|
|
436
453
|
https://cloudinit.readthedocs.io/en/latest/topics/examples.html
|
|
437
454
|
|
|
438
455
|
extra_headers: Send extra headers
|
|
@@ -498,7 +515,7 @@ class GPUBaremetalClustersResource(SyncAPIResource):
|
|
|
498
515
|
if region_id is None:
|
|
499
516
|
region_id = self._client._get_cloud_region_id_path_param()
|
|
500
517
|
if not cluster_id:
|
|
501
|
-
raise ValueError(f"Expected a non-empty value for `cluster_id` but received {cluster_id!r}")
|
|
518
|
+
raise ValueError(f"Expected a non-empty value for `cluster_id` but received {cluster_id!r}")
|
|
502
519
|
return self._post(
|
|
503
520
|
f"/cloud/v1/ai/clusters/gpu/{project_id}/{region_id}/{cluster_id}/resize",
|
|
504
521
|
body=maybe_transform(
|
|
@@ -511,6 +528,164 @@ class GPUBaremetalClustersResource(SyncAPIResource):
|
|
|
511
528
|
cast_to=TaskIDList,
|
|
512
529
|
)
|
|
513
530
|
|
|
531
|
+
def create_and_poll(
|
|
532
|
+
self,
|
|
533
|
+
*,
|
|
534
|
+
project_id: int | None = None,
|
|
535
|
+
region_id: int | None = None,
|
|
536
|
+
flavor: str,
|
|
537
|
+
image_id: str,
|
|
538
|
+
interfaces: Iterable[gpu_baremetal_cluster_create_params.Interface],
|
|
539
|
+
name: str,
|
|
540
|
+
instances_count: int | NotGiven = NOT_GIVEN,
|
|
541
|
+
ssh_key_name: str | NotGiven = NOT_GIVEN,
|
|
542
|
+
tags: TagUpdateMapParam | NotGiven = NOT_GIVEN,
|
|
543
|
+
polling_interval_seconds: int | NotGiven = NOT_GIVEN,
|
|
544
|
+
# Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
|
|
545
|
+
# The extra values given here take precedence over values defined on the client or passed to this method.
|
|
546
|
+
extra_headers: Headers | None = None,
|
|
547
|
+
extra_query: Query | None = None,
|
|
548
|
+
extra_body: Body | None = None,
|
|
549
|
+
timeout: float | httpx.Timeout | None | NotGiven = NOT_GIVEN,
|
|
550
|
+
) -> GPUBaremetalCluster:
|
|
551
|
+
"""
|
|
552
|
+
Create a bare metal GPU cluster and wait for it to be ready.
|
|
553
|
+
"""
|
|
554
|
+
response = self.create(
|
|
555
|
+
project_id=project_id,
|
|
556
|
+
region_id=region_id,
|
|
557
|
+
flavor=flavor,
|
|
558
|
+
image_id=image_id,
|
|
559
|
+
interfaces=interfaces,
|
|
560
|
+
name=name,
|
|
561
|
+
instances_count=instances_count,
|
|
562
|
+
ssh_key_name=ssh_key_name,
|
|
563
|
+
tags=tags,
|
|
564
|
+
extra_headers=extra_headers,
|
|
565
|
+
extra_query=extra_query,
|
|
566
|
+
extra_body=extra_body,
|
|
567
|
+
timeout=timeout,
|
|
568
|
+
)
|
|
569
|
+
if not response.tasks or len(response.tasks) != 1:
|
|
570
|
+
raise ValueError(f"Expected exactly one task to be created")
|
|
571
|
+
task = self._client.cloud.tasks.poll(
|
|
572
|
+
response.tasks[0],
|
|
573
|
+
extra_headers=extra_headers,
|
|
574
|
+
extra_query=extra_query,
|
|
575
|
+
extra_body=extra_body,
|
|
576
|
+
polling_interval_seconds=polling_interval_seconds,
|
|
577
|
+
)
|
|
578
|
+
if not task.created_resources or not task.created_resources.ai_clusters:
|
|
579
|
+
raise ValueError("No cluster was created")
|
|
580
|
+
cluster_id = task.created_resources.ai_clusters[0]
|
|
581
|
+
return self.get(
|
|
582
|
+
cluster_id=cluster_id,
|
|
583
|
+
project_id=project_id,
|
|
584
|
+
region_id=region_id,
|
|
585
|
+
extra_headers=extra_headers,
|
|
586
|
+
extra_query=extra_query,
|
|
587
|
+
extra_body=extra_body,
|
|
588
|
+
timeout=timeout,
|
|
589
|
+
)
|
|
590
|
+
|
|
591
|
+
def rebuild_and_poll(
|
|
592
|
+
self,
|
|
593
|
+
cluster_id: str,
|
|
594
|
+
*,
|
|
595
|
+
project_id: int | None = None,
|
|
596
|
+
region_id: int | None = None,
|
|
597
|
+
nodes: List[str],
|
|
598
|
+
image_id: Optional[str] | NotGiven = NOT_GIVEN,
|
|
599
|
+
user_data: Optional[str] | NotGiven = NOT_GIVEN,
|
|
600
|
+
polling_interval_seconds: int | NotGiven = NOT_GIVEN,
|
|
601
|
+
# Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
|
|
602
|
+
# The extra values given here take precedence over values defined on the client or passed to this method.
|
|
603
|
+
extra_headers: Headers | None = None,
|
|
604
|
+
extra_query: Query | None = None,
|
|
605
|
+
extra_body: Body | None = None,
|
|
606
|
+
timeout: float | httpx.Timeout | None | NotGiven = NOT_GIVEN,
|
|
607
|
+
) -> GPUBaremetalCluster:
|
|
608
|
+
"""
|
|
609
|
+
Rebuild a bare metal GPU cluster and poll for the result. Only the first task will be polled. If you need to poll more tasks, use the `tasks.poll` method.
|
|
610
|
+
"""
|
|
611
|
+
response = self.rebuild(
|
|
612
|
+
cluster_id=cluster_id,
|
|
613
|
+
project_id=project_id,
|
|
614
|
+
region_id=region_id,
|
|
615
|
+
nodes=nodes,
|
|
616
|
+
image_id=image_id,
|
|
617
|
+
user_data=user_data,
|
|
618
|
+
extra_headers=extra_headers,
|
|
619
|
+
extra_query=extra_query,
|
|
620
|
+
extra_body=extra_body,
|
|
621
|
+
timeout=timeout,
|
|
622
|
+
)
|
|
623
|
+
if not response.tasks:
|
|
624
|
+
raise ValueError("Expected at least one task to be created")
|
|
625
|
+
self._client.cloud.tasks.poll(
|
|
626
|
+
response.tasks[0],
|
|
627
|
+
extra_headers=extra_headers,
|
|
628
|
+
extra_query=extra_query,
|
|
629
|
+
extra_body=extra_body,
|
|
630
|
+
polling_interval_seconds=polling_interval_seconds,
|
|
631
|
+
)
|
|
632
|
+
return self.get(
|
|
633
|
+
cluster_id=cluster_id,
|
|
634
|
+
project_id=project_id,
|
|
635
|
+
region_id=region_id,
|
|
636
|
+
extra_headers=extra_headers,
|
|
637
|
+
extra_query=extra_query,
|
|
638
|
+
extra_body=extra_body,
|
|
639
|
+
timeout=timeout,
|
|
640
|
+
)
|
|
641
|
+
|
|
642
|
+
def resize_and_poll(
|
|
643
|
+
self,
|
|
644
|
+
cluster_id: str,
|
|
645
|
+
*,
|
|
646
|
+
project_id: int | None = None,
|
|
647
|
+
region_id: int | None = None,
|
|
648
|
+
instances_count: int,
|
|
649
|
+
polling_interval_seconds: int | NotGiven = NOT_GIVEN,
|
|
650
|
+
# Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
|
|
651
|
+
# The extra values given here take precedence over values defined on the client or passed to this method.
|
|
652
|
+
extra_headers: Headers | None = None,
|
|
653
|
+
extra_query: Query | None = None,
|
|
654
|
+
extra_body: Body | None = None,
|
|
655
|
+
timeout: float | httpx.Timeout | None | NotGiven = NOT_GIVEN,
|
|
656
|
+
) -> GPUBaremetalCluster:
|
|
657
|
+
"""
|
|
658
|
+
Resize a bare metal GPU cluster and poll for the result. Only the first task will be polled. If you need to poll more tasks, use the `tasks.poll` method.
|
|
659
|
+
"""
|
|
660
|
+
response = self.resize(
|
|
661
|
+
cluster_id=cluster_id,
|
|
662
|
+
project_id=project_id,
|
|
663
|
+
region_id=region_id,
|
|
664
|
+
instances_count=instances_count,
|
|
665
|
+
extra_headers=extra_headers,
|
|
666
|
+
extra_query=extra_query,
|
|
667
|
+
extra_body=extra_body,
|
|
668
|
+
timeout=timeout,
|
|
669
|
+
)
|
|
670
|
+
if not response.tasks:
|
|
671
|
+
raise ValueError("Expected at least one task to be created")
|
|
672
|
+
self._client.cloud.tasks.poll(
|
|
673
|
+
response.tasks[0],
|
|
674
|
+
extra_headers=extra_headers,
|
|
675
|
+
extra_query=extra_query,
|
|
676
|
+
extra_body=extra_body,
|
|
677
|
+
polling_interval_seconds=polling_interval_seconds,
|
|
678
|
+
)
|
|
679
|
+
return self.get(
|
|
680
|
+
cluster_id=cluster_id,
|
|
681
|
+
project_id=project_id,
|
|
682
|
+
region_id=region_id,
|
|
683
|
+
extra_headers=extra_headers,
|
|
684
|
+
extra_query=extra_query,
|
|
685
|
+
extra_body=extra_body,
|
|
686
|
+
timeout=timeout,
|
|
687
|
+
)
|
|
688
|
+
|
|
514
689
|
|
|
515
690
|
class AsyncGPUBaremetalClustersResource(AsyncAPIResource):
|
|
516
691
|
@cached_property
|
|
@@ -558,8 +733,11 @@ class AsyncGPUBaremetalClustersResource(AsyncAPIResource):
|
|
|
558
733
|
interfaces: Iterable[gpu_baremetal_cluster_create_params.Interface],
|
|
559
734
|
name: str,
|
|
560
735
|
instances_count: int | NotGiven = NOT_GIVEN,
|
|
736
|
+
password: str | NotGiven = NOT_GIVEN,
|
|
561
737
|
ssh_key_name: str | NotGiven = NOT_GIVEN,
|
|
562
738
|
tags: TagUpdateMapParam | NotGiven = NOT_GIVEN,
|
|
739
|
+
user_data: str | NotGiven = NOT_GIVEN,
|
|
740
|
+
username: str | NotGiven = NOT_GIVEN,
|
|
563
741
|
# Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
|
|
564
742
|
# The extra values given here take precedence over values defined on the client or passed to this method.
|
|
565
743
|
extra_headers: Headers | None = None,
|
|
@@ -582,8 +760,12 @@ class AsyncGPUBaremetalClustersResource(AsyncAPIResource):
|
|
|
582
760
|
|
|
583
761
|
instances_count: Number of servers to create
|
|
584
762
|
|
|
763
|
+
password: A password for a bare metal server. This parameter is used to set a password for
|
|
764
|
+
the "Admin" user on a Windows instance, a default user or a new user on a Linux
|
|
765
|
+
instance
|
|
766
|
+
|
|
585
767
|
ssh_key_name: Specifies the name of the SSH keypair, created via the
|
|
586
|
-
|
|
768
|
+
[/v1/`ssh_keys` endpoint](/docs/api-reference/ssh-keys/add-or-generate-ssh-key).
|
|
587
769
|
|
|
588
770
|
tags: Key-value tags to associate with the resource. A tag is a key-value pair that
|
|
589
771
|
can be associated with a resource, enabling efficient filtering and grouping for
|
|
@@ -591,6 +773,13 @@ class AsyncGPUBaremetalClustersResource(AsyncAPIResource):
|
|
|
591
773
|
modified by the user. Tags are also integrated with cost reports, allowing cost
|
|
592
774
|
data to be filtered based on tag keys or values.
|
|
593
775
|
|
|
776
|
+
user_data: String in base64 format. Must not be passed together with 'username' or
|
|
777
|
+
'password'. Examples of the `user_data`:
|
|
778
|
+
https://cloudinit.readthedocs.io/en/latest/topics/examples.html
|
|
779
|
+
|
|
780
|
+
username: A name of a new user in the Linux instance. It may be passed with a 'password'
|
|
781
|
+
parameter
|
|
782
|
+
|
|
594
783
|
extra_headers: Send extra headers
|
|
595
784
|
|
|
596
785
|
extra_query: Add additional query parameters to the request
|
|
@@ -612,8 +801,11 @@ class AsyncGPUBaremetalClustersResource(AsyncAPIResource):
|
|
|
612
801
|
"interfaces": interfaces,
|
|
613
802
|
"name": name,
|
|
614
803
|
"instances_count": instances_count,
|
|
804
|
+
"password": password,
|
|
615
805
|
"ssh_key_name": ssh_key_name,
|
|
616
806
|
"tags": tags,
|
|
807
|
+
"user_data": user_data,
|
|
808
|
+
"username": username,
|
|
617
809
|
},
|
|
618
810
|
gpu_baremetal_cluster_create_params.GPUBaremetalClusterCreateParams,
|
|
619
811
|
),
|
|
@@ -700,7 +892,7 @@ class AsyncGPUBaremetalClustersResource(AsyncAPIResource):
|
|
|
700
892
|
used with floatings.
|
|
701
893
|
|
|
702
894
|
floatings: Comma separated list of floating ids that should be deleted. Can't be used with
|
|
703
|
-
delete_floatings
|
|
895
|
+
`delete_floatings`.
|
|
704
896
|
|
|
705
897
|
reserved_fixed_ips: Comma separated list of port IDs to be deleted with the servers
|
|
706
898
|
|
|
@@ -879,7 +1071,7 @@ class AsyncGPUBaremetalClustersResource(AsyncAPIResource):
|
|
|
879
1071
|
image_id: AI GPU image ID
|
|
880
1072
|
|
|
881
1073
|
user_data:
|
|
882
|
-
String in base64 format.Examples of the user_data
|
|
1074
|
+
String in base64 format.Examples of the `user_data`:
|
|
883
1075
|
https://cloudinit.readthedocs.io/en/latest/topics/examples.html
|
|
884
1076
|
|
|
885
1077
|
extra_headers: Send extra headers
|
|
@@ -945,7 +1137,7 @@ class AsyncGPUBaremetalClustersResource(AsyncAPIResource):
|
|
|
945
1137
|
if region_id is None:
|
|
946
1138
|
region_id = self._client._get_cloud_region_id_path_param()
|
|
947
1139
|
if not cluster_id:
|
|
948
|
-
raise ValueError(f"Expected a non-empty value for `cluster_id` but received {cluster_id!r}")
|
|
1140
|
+
raise ValueError(f"Expected a non-empty value for `cluster_id` but received {cluster_id!r}")
|
|
949
1141
|
return await self._post(
|
|
950
1142
|
f"/cloud/v1/ai/clusters/gpu/{project_id}/{region_id}/{cluster_id}/resize",
|
|
951
1143
|
body=await async_maybe_transform(
|
|
@@ -958,6 +1150,164 @@ class AsyncGPUBaremetalClustersResource(AsyncAPIResource):
|
|
|
958
1150
|
cast_to=TaskIDList,
|
|
959
1151
|
)
|
|
960
1152
|
|
|
1153
|
+
async def create_and_poll(
|
|
1154
|
+
self,
|
|
1155
|
+
*,
|
|
1156
|
+
project_id: int | None = None,
|
|
1157
|
+
region_id: int | None = None,
|
|
1158
|
+
flavor: str,
|
|
1159
|
+
image_id: str,
|
|
1160
|
+
interfaces: Iterable[gpu_baremetal_cluster_create_params.Interface],
|
|
1161
|
+
name: str,
|
|
1162
|
+
instances_count: int | NotGiven = NOT_GIVEN,
|
|
1163
|
+
ssh_key_name: str | NotGiven = NOT_GIVEN,
|
|
1164
|
+
tags: TagUpdateMapParam | NotGiven = NOT_GIVEN,
|
|
1165
|
+
polling_interval_seconds: int | NotGiven = NOT_GIVEN,
|
|
1166
|
+
# Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
|
|
1167
|
+
# The extra values given here take precedence over values defined on the client or passed to this method.
|
|
1168
|
+
extra_headers: Headers | None = None,
|
|
1169
|
+
extra_query: Query | None = None,
|
|
1170
|
+
extra_body: Body | None = None,
|
|
1171
|
+
timeout: float | httpx.Timeout | None | NotGiven = NOT_GIVEN,
|
|
1172
|
+
) -> GPUBaremetalCluster:
|
|
1173
|
+
"""
|
|
1174
|
+
Create a bare metal GPU cluster and wait for it to be ready.
|
|
1175
|
+
"""
|
|
1176
|
+
response = await self.create(
|
|
1177
|
+
project_id=project_id,
|
|
1178
|
+
region_id=region_id,
|
|
1179
|
+
flavor=flavor,
|
|
1180
|
+
image_id=image_id,
|
|
1181
|
+
interfaces=interfaces,
|
|
1182
|
+
name=name,
|
|
1183
|
+
instances_count=instances_count,
|
|
1184
|
+
ssh_key_name=ssh_key_name,
|
|
1185
|
+
tags=tags,
|
|
1186
|
+
extra_headers=extra_headers,
|
|
1187
|
+
extra_query=extra_query,
|
|
1188
|
+
extra_body=extra_body,
|
|
1189
|
+
timeout=timeout,
|
|
1190
|
+
)
|
|
1191
|
+
if not response.tasks or len(response.tasks) != 1:
|
|
1192
|
+
raise ValueError(f"Expected exactly one task to be created")
|
|
1193
|
+
task = await self._client.cloud.tasks.poll(
|
|
1194
|
+
response.tasks[0],
|
|
1195
|
+
extra_headers=extra_headers,
|
|
1196
|
+
extra_query=extra_query,
|
|
1197
|
+
extra_body=extra_body,
|
|
1198
|
+
polling_interval_seconds=polling_interval_seconds,
|
|
1199
|
+
)
|
|
1200
|
+
if not task.created_resources or not task.created_resources.ai_clusters:
|
|
1201
|
+
raise ValueError("No cluster was created")
|
|
1202
|
+
cluster_id = task.created_resources.ai_clusters[0]
|
|
1203
|
+
return await self.get(
|
|
1204
|
+
cluster_id=cluster_id,
|
|
1205
|
+
project_id=project_id,
|
|
1206
|
+
region_id=region_id,
|
|
1207
|
+
extra_headers=extra_headers,
|
|
1208
|
+
extra_query=extra_query,
|
|
1209
|
+
extra_body=extra_body,
|
|
1210
|
+
timeout=timeout,
|
|
1211
|
+
)
|
|
1212
|
+
|
|
1213
|
+
async def rebuild_and_poll(
|
|
1214
|
+
self,
|
|
1215
|
+
cluster_id: str,
|
|
1216
|
+
*,
|
|
1217
|
+
project_id: int | None = None,
|
|
1218
|
+
region_id: int | None = None,
|
|
1219
|
+
nodes: List[str],
|
|
1220
|
+
image_id: Optional[str] | NotGiven = NOT_GIVEN,
|
|
1221
|
+
user_data: Optional[str] | NotGiven = NOT_GIVEN,
|
|
1222
|
+
polling_interval_seconds: int | NotGiven = NOT_GIVEN,
|
|
1223
|
+
# Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
|
|
1224
|
+
# The extra values given here take precedence over values defined on the client or passed to this method.
|
|
1225
|
+
extra_headers: Headers | None = None,
|
|
1226
|
+
extra_query: Query | None = None,
|
|
1227
|
+
extra_body: Body | None = None,
|
|
1228
|
+
timeout: float | httpx.Timeout | None | NotGiven = NOT_GIVEN,
|
|
1229
|
+
) -> GPUBaremetalCluster:
|
|
1230
|
+
"""
|
|
1231
|
+
Rebuild a bare metal GPU cluster and poll for the result. Only the first task will be polled. If you need to poll more tasks, use the `tasks.poll` method.
|
|
1232
|
+
"""
|
|
1233
|
+
response = await self.rebuild(
|
|
1234
|
+
cluster_id=cluster_id,
|
|
1235
|
+
project_id=project_id,
|
|
1236
|
+
region_id=region_id,
|
|
1237
|
+
nodes=nodes,
|
|
1238
|
+
image_id=image_id,
|
|
1239
|
+
user_data=user_data,
|
|
1240
|
+
extra_headers=extra_headers,
|
|
1241
|
+
extra_query=extra_query,
|
|
1242
|
+
extra_body=extra_body,
|
|
1243
|
+
timeout=timeout,
|
|
1244
|
+
)
|
|
1245
|
+
if not response.tasks:
|
|
1246
|
+
raise ValueError("Expected at least one task to be created")
|
|
1247
|
+
await self._client.cloud.tasks.poll(
|
|
1248
|
+
response.tasks[0],
|
|
1249
|
+
extra_headers=extra_headers,
|
|
1250
|
+
extra_query=extra_query,
|
|
1251
|
+
extra_body=extra_body,
|
|
1252
|
+
polling_interval_seconds=polling_interval_seconds,
|
|
1253
|
+
)
|
|
1254
|
+
return await self.get(
|
|
1255
|
+
cluster_id=cluster_id,
|
|
1256
|
+
project_id=project_id,
|
|
1257
|
+
region_id=region_id,
|
|
1258
|
+
extra_headers=extra_headers,
|
|
1259
|
+
extra_query=extra_query,
|
|
1260
|
+
extra_body=extra_body,
|
|
1261
|
+
timeout=timeout,
|
|
1262
|
+
)
|
|
1263
|
+
|
|
1264
|
+
async def resize_and_poll(
|
|
1265
|
+
self,
|
|
1266
|
+
cluster_id: str,
|
|
1267
|
+
*,
|
|
1268
|
+
project_id: int | None = None,
|
|
1269
|
+
region_id: int | None = None,
|
|
1270
|
+
instances_count: int,
|
|
1271
|
+
polling_interval_seconds: int | NotGiven = NOT_GIVEN,
|
|
1272
|
+
# Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
|
|
1273
|
+
# The extra values given here take precedence over values defined on the client or passed to this method.
|
|
1274
|
+
extra_headers: Headers | None = None,
|
|
1275
|
+
extra_query: Query | None = None,
|
|
1276
|
+
extra_body: Body | None = None,
|
|
1277
|
+
timeout: float | httpx.Timeout | None | NotGiven = NOT_GIVEN,
|
|
1278
|
+
) -> GPUBaremetalCluster:
|
|
1279
|
+
"""
|
|
1280
|
+
Resize a bare metal GPU cluster and poll for the result. Only the first task will be polled. If you need to poll more tasks, use the `tasks.poll` method.
|
|
1281
|
+
"""
|
|
1282
|
+
response = await self.resize(
|
|
1283
|
+
cluster_id=cluster_id,
|
|
1284
|
+
project_id=project_id,
|
|
1285
|
+
region_id=region_id,
|
|
1286
|
+
instances_count=instances_count,
|
|
1287
|
+
extra_headers=extra_headers,
|
|
1288
|
+
extra_query=extra_query,
|
|
1289
|
+
extra_body=extra_body,
|
|
1290
|
+
timeout=timeout,
|
|
1291
|
+
)
|
|
1292
|
+
if not response.tasks:
|
|
1293
|
+
raise ValueError("Expected at least one task to be created")
|
|
1294
|
+
await self._client.cloud.tasks.poll(
|
|
1295
|
+
response.tasks[0],
|
|
1296
|
+
extra_headers=extra_headers,
|
|
1297
|
+
extra_query=extra_query,
|
|
1298
|
+
extra_body=extra_body,
|
|
1299
|
+
polling_interval_seconds=polling_interval_seconds,
|
|
1300
|
+
)
|
|
1301
|
+
return await self.get(
|
|
1302
|
+
cluster_id=cluster_id,
|
|
1303
|
+
project_id=project_id,
|
|
1304
|
+
region_id=region_id,
|
|
1305
|
+
extra_headers=extra_headers,
|
|
1306
|
+
extra_query=extra_query,
|
|
1307
|
+
extra_body=extra_body,
|
|
1308
|
+
timeout=timeout,
|
|
1309
|
+
)
|
|
1310
|
+
|
|
961
1311
|
|
|
962
1312
|
class GPUBaremetalClustersResourceWithRawResponse:
|
|
963
1313
|
def __init__(self, gpu_baremetal_clusters: GPUBaremetalClustersResource) -> None:
|