hyperstack 1.25.0a0__py3-none-any.whl → 1.41.0a0__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.
Files changed (225) hide show
  1. hyperstack/__init__.py +79 -131
  2. hyperstack/api/__init__.py +2 -0
  3. hyperstack/api/alive_api.py +240 -0
  4. hyperstack/api/api_key_api.py +16 -20
  5. hyperstack/api/assigning_member_role_api.py +15 -17
  6. hyperstack/api/auth_api.py +1050 -5
  7. hyperstack/api/beta_access_api.py +856 -0
  8. hyperstack/api/billing_api.py +6461 -673
  9. hyperstack/api/calculate_api.py +8 -9
  10. hyperstack/api/callbacks_api.py +120 -126
  11. hyperstack/api/cluster_events_api.py +1 -2
  12. hyperstack/api/clusters_api.py +2492 -146
  13. hyperstack/api/compliance_api.py +14 -18
  14. hyperstack/api/credit_api.py +17 -15
  15. hyperstack/api/customer_contract_api.py +30 -33
  16. hyperstack/api/dashboard_api.py +4 -5
  17. hyperstack/api/deployment_api.py +4 -8
  18. hyperstack/api/environment_api.py +285 -16
  19. hyperstack/api/firewall_attachment_api.py +11 -9
  20. hyperstack/api/firewalls_api.py +341 -347
  21. hyperstack/api/flavor_api.py +4 -5
  22. hyperstack/api/floating_ip_api.py +50 -49
  23. hyperstack/api/gpu_api.py +1 -2
  24. hyperstack/api/image_api.py +35 -39
  25. hyperstack/api/invite_api.py +288 -18
  26. hyperstack/api/keypair_api.py +22 -26
  27. hyperstack/api/organization_api.py +12 -15
  28. hyperstack/api/partner_config_api.py +564 -0
  29. hyperstack/api/payment_api.py +299 -18
  30. hyperstack/api/permission_api.py +4 -5
  31. hyperstack/api/policy_api.py +4 -5
  32. hyperstack/api/pricebook_api.py +14 -12
  33. hyperstack/api/profile_api.py +13 -17
  34. hyperstack/api/rbac_role_api.py +20 -25
  35. hyperstack/api/region_api.py +7 -8
  36. hyperstack/api/security_rules_api.py +1 -2
  37. hyperstack/api/snapshot_events_api.py +1 -2
  38. hyperstack/api/snapshots_api.py +166 -172
  39. hyperstack/api/stock_api.py +4 -5
  40. hyperstack/api/template_api.py +14 -19
  41. hyperstack/api/user_api.py +55 -49
  42. hyperstack/api/user_detail_choice_api.py +1 -2
  43. hyperstack/api/user_permission_api.py +8 -10
  44. hyperstack/api/virtual_machine_api.py +1529 -929
  45. hyperstack/api/virtual_machine_events_api.py +21 -22
  46. hyperstack/api/vnc_url_api.py +54 -50
  47. hyperstack/api/volume_api.py +340 -40
  48. hyperstack/api/volume_attachment_api.py +342 -42
  49. hyperstack/api_client.py +1 -1
  50. hyperstack/configuration.py +1 -11
  51. hyperstack/models/__init__.py +76 -130
  52. hyperstack/models/{environment_fieldsfor_volume.py → access_token_field.py} +7 -7
  53. hyperstack/models/attach_volume_fields.py +6 -2
  54. hyperstack/models/attach_volumes_payload.py +4 -2
  55. hyperstack/models/{virtual_machine_usage.py → attachments_fields_for_volume.py} +13 -11
  56. hyperstack/models/{flavor_vm_fields.py → attributes.py} +15 -18
  57. hyperstack/models/auth_get_token_response_model.py +4 -6
  58. hyperstack/models/{future_node_model.py → beta_access_request_fields.py} +27 -25
  59. hyperstack/models/{create_gpu.py → beta_access_request_payload.py} +9 -11
  60. hyperstack/models/{create_discount_response.py → beta_access_request_response_model.py} +11 -11
  61. hyperstack/models/{export_billing_data_request.py → beta_access_status_item.py} +20 -23
  62. hyperstack/models/{get_all_discount_for_all_organization_response.py → beta_access_status_response_model.py} +15 -15
  63. hyperstack/models/{exclude_billing_post_response.py → billing_history.py} +13 -11
  64. hyperstack/models/billing_history_data_synthesis_details.py +105 -0
  65. hyperstack/models/{vm_usage_response.py → billing_history_fine_tuning.py} +23 -19
  66. hyperstack/models/billing_history_model_evalutation_details.py +105 -0
  67. hyperstack/models/{get_all_discounts_fields.py → billing_history_serverless_inference.py} +23 -24
  68. hyperstack/models/billing_history_serverless_inference_details.py +105 -0
  69. hyperstack/models/{billingmetricesfields.py → billing_metrices_fields.py} +4 -4
  70. hyperstack/models/{billingmetricesresponse.py → billing_metrices_response.py} +7 -7
  71. hyperstack/models/cluster_fields.py +27 -9
  72. hyperstack/models/{add_update_flavor_organization_payload.py → cluster_flavor_fields.py} +28 -26
  73. hyperstack/models/{historical_instances_fields.py → cluster_node_fields.py} +24 -22
  74. hyperstack/models/{internal_instance_flavor_fields.py → cluster_node_group_fields.py} +17 -17
  75. hyperstack/models/{create_update_policy_response_model.py → cluster_node_groups_create_response.py} +21 -11
  76. hyperstack/models/{create_update_permission_response_model.py → cluster_node_groups_get_response.py} +11 -11
  77. hyperstack/models/{auth_request_login_response_model.py → cluster_node_groups_list_response.py} +15 -11
  78. hyperstack/models/{contract_eligible_instance_fields.py → cluster_node_instance_fields.py} +13 -11
  79. hyperstack/models/{image_logos.py → cluster_nodes_list_response.py} +14 -14
  80. hyperstack/models/{internal_environment_fields.py → cluster_version.py} +13 -9
  81. hyperstack/models/cluster_versions.py +10 -2
  82. hyperstack/models/{future_nodes_stock_model.py → colors.py} +17 -15
  83. hyperstack/models/contract_discount_plan_fields.py +3 -1
  84. hyperstack/models/contract_instance_fields.py +7 -1
  85. hyperstack/models/{future_node_response_model.py → create_cluster_node_fields.py} +23 -18
  86. hyperstack/models/{update_gpu.py → create_cluster_node_group_payload.py} +12 -11
  87. hyperstack/models/create_cluster_payload.py +31 -8
  88. hyperstack/models/create_environment.py +1 -1
  89. hyperstack/models/create_instances_payload.py +7 -7
  90. hyperstack/models/create_profile_payload.py +1 -1
  91. hyperstack/models/create_snapshot_payload.py +2 -4
  92. hyperstack/models/create_volume_payload.py +1 -1
  93. hyperstack/models/data_synthesis_billing_history_details_response_schema.py +95 -0
  94. hyperstack/models/{deployment_fieldsforstartdeployments.py → deployment_fields_for_start_deployments.py} +4 -4
  95. hyperstack/models/{editlabelofanexisting_vm_payload.py → edit_label_of_an_existing_vm_payload.py} +4 -4
  96. hyperstack/models/environment_features.py +14 -2
  97. hyperstack/models/{node_stocks_payload.py → environment_fields_for_volume.py} +10 -12
  98. hyperstack/models/flavor_fields.py +3 -1
  99. hyperstack/models/{customer_fields.py → flavor_label_fields.py} +7 -7
  100. hyperstack/models/{getcreditandthresholdinfo.py → get_credit_and_threshold_info.py} +4 -4
  101. hyperstack/models/{getcreditandthresholdinfoinresponse.py → get_credit_and_threshold_info_in_response.py} +7 -7
  102. hyperstack/models/{region_payload.py → get_instance_logs_response.py} +7 -9
  103. hyperstack/models/instance_fields.py +8 -4
  104. hyperstack/models/instance_flavor_fields.py +13 -1
  105. hyperstack/models/{flavor_response.py → keypair_environment_features.py} +20 -16
  106. hyperstack/models/{internal_instance_keypair_fields.py → keypair_environment_fields.py} +13 -11
  107. hyperstack/models/keypair_fields.py +6 -2
  108. hyperstack/models/{lastdaycostfields.py → last_day_cost_fields.py} +4 -4
  109. hyperstack/models/{lastdaycostresponse.py → last_day_cost_response.py} +7 -7
  110. hyperstack/models/{export_billing_data_response.py → logos.py} +13 -9
  111. hyperstack/models/{creditrequestresponse.py → master_flavors_response.py} +14 -14
  112. hyperstack/models/{customer_payload.py → mfa_status_fields.py} +8 -10
  113. hyperstack/models/{gpu.py → mfa_status_response.py} +11 -11
  114. hyperstack/models/model_evaluation_billing_history_details_response_schema.py +95 -0
  115. hyperstack/models/{organization_thresholdfields.py → organization_threshold_fields.py} +4 -4
  116. hyperstack/models/{organizationthresholdupdateresponse.py → organization_threshold_update_response.py} +7 -7
  117. hyperstack/models/{organizationthresholdsresponse.py → organization_thresholds_response.py} +7 -7
  118. hyperstack/models/{logo_get_response.py → pagination.py} +12 -12
  119. hyperstack/models/{billing_response.py → partner_config.py} +31 -20
  120. hyperstack/models/payment_details_fields.py +5 -1
  121. hyperstack/models/{logout_payload.py → primary_color.py} +10 -8
  122. hyperstack/models/region_fields.py +16 -2
  123. hyperstack/models/{vm_usage_request_payload.py → request_instance_logs_payload.py} +8 -8
  124. hyperstack/models/{stock_visibility_user_payload.py → request_instance_logs_response.py} +8 -8
  125. hyperstack/models/{contract_billing_history.py → resource_level_billing_bucket_details_resources.py} +10 -10
  126. hyperstack/models/{node_response_model.py → resource_level_billing_history_resources_cluster.py} +21 -11
  127. hyperstack/models/resource_level_billing_history_response_attributes.py +3 -1
  128. hyperstack/models/{get_all_contracts_response_model.py → resource_level_bucket_billing_details_response_model.py} +11 -15
  129. hyperstack/models/{contract_billing_history_response_model.py → resource_level_bucket_billing_history_response_model.py} +11 -11
  130. hyperstack/models/resource_level_cluster_billing_details_response_model.py +95 -0
  131. hyperstack/models/resource_level_cluster_billing_history_response_model.py +95 -0
  132. hyperstack/models/{get_discount_detail_response.py → resource_level_cluster_graph_billing_details_response_model.py} +11 -11
  133. hyperstack/models/{organization_object_response.py → resource_level_graph_billing_details_bucket.py} +18 -14
  134. hyperstack/models/{update_discounts_status_payload.py → secondary_color.py} +10 -8
  135. hyperstack/models/{security_rules_fieldsfor_instance.py → security_rules_fields_for_instance.py} +4 -4
  136. hyperstack/models/serverless_inferenced_billing_history_details_response_schema.py +95 -0
  137. hyperstack/models/snapshot_fields.py +6 -1
  138. hyperstack/models/snapshot_retrieve_fields.py +29 -2
  139. hyperstack/models/start_deployment.py +3 -3
  140. hyperstack/models/{subscribeorunsubscribeupdatepayload.py → subscribe_or_unsubscribe_update_payload.py} +4 -4
  141. hyperstack/models/token_based_billing_history_response.py +95 -0
  142. hyperstack/models/{update_keypairnameresponse.py → update_keypair_name_response.py} +4 -4
  143. hyperstack/models/update_volume_attachment_payload.py +87 -0
  144. hyperstack/models/{verify_api_key_payload.py → update_volume_payload.py} +7 -7
  145. hyperstack/models/{stock_visibility_user_list_response.py → update_volume_response.py} +14 -16
  146. hyperstack/models/{auth_request_login_fields.py → uris.py} +19 -9
  147. hyperstack/models/{userinfopostpayload.py → user_info_post_payload.py} +4 -4
  148. hyperstack/models/{node_stock_response_model.py → user_organizations_response.py} +14 -14
  149. hyperstack/models/users_info_fields.py +3 -1
  150. hyperstack/models/volume_attachment_fields.py +9 -5
  151. hyperstack/models/volume_fields.py +14 -4
  152. hyperstack/models/{volume_fieldsfor_instance.py → volume_fields_for_instance.py} +4 -4
  153. hyperstack/models/volumes.py +17 -11
  154. hyperstack/models/{instances_summary_fields.py → volumes_fields.py} +33 -29
  155. hyperstack/models/workload_billing_history_response.py +95 -0
  156. {hyperstack-1.25.0a0.dist-info → hyperstack-1.41.0a0.dist-info}/METADATA +2 -2
  157. hyperstack-1.41.0a0.dist-info/RECORD +349 -0
  158. {hyperstack-1.25.0a0.dist-info → hyperstack-1.41.0a0.dist-info}/WHEEL +1 -1
  159. hyperstack/models/api_key_verify_fields.py +0 -93
  160. hyperstack/models/billing_immune_resources_response.py +0 -95
  161. hyperstack/models/contract_billing_history_response_attributes.py +0 -99
  162. hyperstack/models/contract_change_payload.py +0 -101
  163. hyperstack/models/contract_eligible_instances_response.py +0 -101
  164. hyperstack/models/contract_event_create_model.py +0 -91
  165. hyperstack/models/contract_resource_payload.py +0 -95
  166. hyperstack/models/contractl_billing_history_response_metrics.py +0 -87
  167. hyperstack/models/create_contract_fields.py +0 -110
  168. hyperstack/models/create_contract_payload.py +0 -106
  169. hyperstack/models/create_discounts_payload.py +0 -112
  170. hyperstack/models/create_update_permission_payload.py +0 -93
  171. hyperstack/models/create_update_policy_payload.py +0 -93
  172. hyperstack/models/creditrechargelimitfield.py +0 -93
  173. hyperstack/models/creditrechargelimitresponse.py +0 -99
  174. hyperstack/models/creditrequests.py +0 -96
  175. hyperstack/models/data.py +0 -91
  176. hyperstack/models/discount_entity_model.py +0 -97
  177. hyperstack/models/discount_fields.py +0 -100
  178. hyperstack/models/discount_plan_fields.py +0 -108
  179. hyperstack/models/discount_resource_fields.py +0 -93
  180. hyperstack/models/discount_resource_payload.py +0 -93
  181. hyperstack/models/exclude_billing_post_payload.py +0 -91
  182. hyperstack/models/field_change.py +0 -91
  183. hyperstack/models/flavor_payload.py +0 -101
  184. hyperstack/models/flavor_vms_response.py +0 -99
  185. hyperstack/models/future_node_stock_model.py +0 -93
  186. hyperstack/models/future_node_update_model.py +0 -98
  187. hyperstack/models/get_all_contract_fields.py +0 -100
  188. hyperstack/models/get_discount_response.py +0 -99
  189. hyperstack/models/get_entity_discount_detail_response.py +0 -108
  190. hyperstack/models/get_token_payload.py +0 -89
  191. hyperstack/models/get_version_response.py +0 -91
  192. hyperstack/models/historical_instance.py +0 -101
  193. hyperstack/models/infrahub_resource_object_response.py +0 -119
  194. hyperstack/models/insert_discount_plan_fields.py +0 -112
  195. hyperstack/models/internal_instance_fields.py +0 -156
  196. hyperstack/models/internal_instance_image_fields.py +0 -95
  197. hyperstack/models/internal_instances_response.py +0 -99
  198. hyperstack/models/internal_security_rules_fields_for_instance.py +0 -104
  199. hyperstack/models/internal_volume_attachment_fields.py +0 -98
  200. hyperstack/models/internal_volume_fields.py +0 -95
  201. hyperstack/models/internal_volumes_response.py +0 -99
  202. hyperstack/models/new_stock_update_response_model.py +0 -89
  203. hyperstack/models/node_model.py +0 -114
  204. hyperstack/models/node_payload_model.py +0 -97
  205. hyperstack/models/node_power_usage_model.py +0 -120
  206. hyperstack/models/node_stock_payload_model.py +0 -95
  207. hyperstack/models/organizationcreditrechargelimitresponse.py +0 -95
  208. hyperstack/models/power_usage_model.py +0 -89
  209. hyperstack/models/pricebook_resource_object_response.py +0 -107
  210. hyperstack/models/refresh_token_payload.py +0 -89
  211. hyperstack/models/region_response.py +0 -95
  212. hyperstack/models/set_defaults_payload.py +0 -89
  213. hyperstack/models/single_visibility_user_response.py +0 -91
  214. hyperstack/models/success_response_model.py +0 -89
  215. hyperstack/models/token_fields.py +0 -91
  216. hyperstack/models/update_contract_payload.py +0 -104
  217. hyperstack/models/update_discounts_payload.py +0 -102
  218. hyperstack/models/user_transfer_payload.py +0 -89
  219. hyperstack/models/verify_api_key_response_model.py +0 -95
  220. hyperstack/models/volume_status_change_fields.py +0 -96
  221. hyperstack/models/volumes_last_status_change_response.py +0 -99
  222. hyperstack/models/warning_mail_log_fields.py +0 -99
  223. hyperstack/models/warning_mail_log_response.py +0 -101
  224. hyperstack-1.25.0a0.dist-info/RECORD +0 -401
  225. {hyperstack-1.25.0a0.dist-info → hyperstack-1.41.0a0.dist-info}/top_level.txt +0 -0
@@ -23,9 +23,9 @@ from typing import Any, ClassVar, Dict, List, Optional
23
23
  from typing import Optional, Set
24
24
  from typing_extensions import Self
25
25
 
26
- class SecurityRulesFieldsforInstance(BaseModel):
26
+ class SecurityRulesFieldsForInstance(BaseModel):
27
27
  """
28
- SecurityRulesFieldsforInstance
28
+ SecurityRulesFieldsForInstance
29
29
  """ # noqa: E501
30
30
  created_at: Optional[datetime] = None
31
31
  direction: Optional[StrictStr] = None
@@ -56,7 +56,7 @@ class SecurityRulesFieldsforInstance(BaseModel):
56
56
 
57
57
  @classmethod
58
58
  def from_json(cls, json_str: str) -> Optional[Self]:
59
- """Create an instance of SecurityRulesFieldsforInstance from a JSON string"""
59
+ """Create an instance of SecurityRulesFieldsForInstance from a JSON string"""
60
60
  return cls.from_dict(json.loads(json_str))
61
61
 
62
62
  def to_dict(self) -> Dict[str, Any]:
@@ -81,7 +81,7 @@ class SecurityRulesFieldsforInstance(BaseModel):
81
81
 
82
82
  @classmethod
83
83
  def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]:
84
- """Create an instance of SecurityRulesFieldsforInstance from a dict"""
84
+ """Create an instance of SecurityRulesFieldsForInstance from a dict"""
85
85
  if obj is None:
86
86
  return None
87
87
 
@@ -0,0 +1,95 @@
1
+ # coding: utf-8
2
+
3
+ """
4
+ Infrahub-API
5
+
6
+ Leverage the Infrahub API and Hyperstack platform to easily create, manage, and scale powerful GPU virtual machines and their associated resources. Access this SDK to automate the deployment of your workloads and streamline your infrastructure management. To contribute, please raise an issue with a bug report, feature request, feedback, or general inquiry.
7
+
8
+ The version of the OpenAPI document: 1.0
9
+ Generated by OpenAPI Generator (https://openapi-generator.tech)
10
+
11
+ Do not edit the class manually.
12
+ """ # noqa: E501
13
+
14
+
15
+ from __future__ import annotations
16
+ import pprint
17
+ import re # noqa: F401
18
+ import json
19
+
20
+ from pydantic import BaseModel, ConfigDict, StrictBool, StrictStr
21
+ from typing import Any, ClassVar, Dict, List, Optional
22
+ from ..models.billing_history_serverless_inference_details import BillingHistoryServerlessInferenceDetails
23
+ from typing import Optional, Set
24
+ from typing_extensions import Self
25
+
26
+ class ServerlessInferencedBillingHistoryDetailsResponseSchema(BaseModel):
27
+ """
28
+ ServerlessInferencedBillingHistoryDetailsResponseSchema
29
+ """ # noqa: E501
30
+ billing_history_serverless_inference_details: Optional[BillingHistoryServerlessInferenceDetails] = None
31
+ message: Optional[StrictStr] = None
32
+ status: Optional[StrictBool] = None
33
+ __properties: ClassVar[List[str]] = ["billing_history_serverless_inference_details", "message", "status"]
34
+
35
+ model_config = ConfigDict(
36
+ populate_by_name=True,
37
+ validate_assignment=True,
38
+ protected_namespaces=(),
39
+ )
40
+
41
+
42
+ def to_str(self) -> str:
43
+ """Returns the string representation of the model using alias"""
44
+ return pprint.pformat(self.model_dump(by_alias=True))
45
+
46
+ def to_json(self) -> str:
47
+ """Returns the JSON representation of the model using alias"""
48
+ # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead
49
+ return json.dumps(self.to_dict())
50
+
51
+ @classmethod
52
+ def from_json(cls, json_str: str) -> Optional[Self]:
53
+ """Create an instance of ServerlessInferencedBillingHistoryDetailsResponseSchema from a JSON string"""
54
+ return cls.from_dict(json.loads(json_str))
55
+
56
+ def to_dict(self) -> Dict[str, Any]:
57
+ """Return the dictionary representation of the model using alias.
58
+
59
+ This has the following differences from calling pydantic's
60
+ `self.model_dump(by_alias=True)`:
61
+
62
+ * `None` is only added to the output dict for nullable fields that
63
+ were set at model initialization. Other fields with value `None`
64
+ are ignored.
65
+ """
66
+ excluded_fields: Set[str] = set([
67
+ ])
68
+
69
+ _dict = self.model_dump(
70
+ by_alias=True,
71
+ exclude=excluded_fields,
72
+ exclude_none=True,
73
+ )
74
+ # override the default output from pydantic by calling `to_dict()` of billing_history_serverless_inference_details
75
+ if self.billing_history_serverless_inference_details:
76
+ _dict['billing_history_serverless_inference_details'] = self.billing_history_serverless_inference_details.to_dict()
77
+ return _dict
78
+
79
+ @classmethod
80
+ def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]:
81
+ """Create an instance of ServerlessInferencedBillingHistoryDetailsResponseSchema from a dict"""
82
+ if obj is None:
83
+ return None
84
+
85
+ if not isinstance(obj, dict):
86
+ return cls.model_validate(obj)
87
+
88
+ _obj = cls.model_validate({
89
+ "billing_history_serverless_inference_details": BillingHistoryServerlessInferenceDetails.from_dict(obj["billing_history_serverless_inference_details"]) if obj.get("billing_history_serverless_inference_details") is not None else None,
90
+ "message": obj.get("message"),
91
+ "status": obj.get("status")
92
+ })
93
+ return _obj
94
+
95
+
@@ -17,6 +17,7 @@ import pprint
17
17
  import re # noqa: F401
18
18
  import json
19
19
 
20
+ from datetime import datetime
20
21
  from pydantic import BaseModel, ConfigDict, Field, StrictBool, StrictInt, StrictStr
21
22
  from typing import Any, ClassVar, Dict, List, Optional
22
23
  from typing import Optional, Set
@@ -26,6 +27,7 @@ class SnapshotFields(BaseModel):
26
27
  """
27
28
  SnapshotFields
28
29
  """ # noqa: E501
30
+ created_at: datetime = Field(description="Creation timestamp")
29
31
  description: StrictStr = Field(description="Description of the snapshot")
30
32
  has_floating_ip: Optional[StrictBool] = Field(default=None, description="Indicates if the VM had a floating IP assigned")
31
33
  id: StrictInt = Field(description="Snapshot ID")
@@ -35,8 +37,9 @@ class SnapshotFields(BaseModel):
35
37
  region_id: StrictInt = Field(description="Region where the snapshot will be available")
36
38
  size: StrictInt = Field(description="Size in GB of the snapshot")
37
39
  status: StrictStr = Field(description="Status of the snapshot")
40
+ updated_at: datetime = Field(description="Last update timestamp")
38
41
  vm_id: StrictInt = Field(description="ID of the VM from which the snapshot is created")
39
- __properties: ClassVar[List[str]] = ["description", "has_floating_ip", "id", "is_image", "labels", "name", "region_id", "size", "status", "vm_id"]
42
+ __properties: ClassVar[List[str]] = ["created_at", "description", "has_floating_ip", "id", "is_image", "labels", "name", "region_id", "size", "status", "updated_at", "vm_id"]
40
43
 
41
44
  model_config = ConfigDict(
42
45
  populate_by_name=True,
@@ -89,6 +92,7 @@ class SnapshotFields(BaseModel):
89
92
  return cls.model_validate(obj)
90
93
 
91
94
  _obj = cls.model_validate({
95
+ "created_at": obj.get("created_at"),
92
96
  "description": obj.get("description"),
93
97
  "has_floating_ip": obj.get("has_floating_ip"),
94
98
  "id": obj.get("id"),
@@ -98,6 +102,7 @@ class SnapshotFields(BaseModel):
98
102
  "region_id": obj.get("region_id"),
99
103
  "size": obj.get("size"),
100
104
  "status": obj.get("status"),
105
+ "updated_at": obj.get("updated_at"),
101
106
  "vm_id": obj.get("vm_id")
102
107
  })
103
108
  return _obj
@@ -17,6 +17,7 @@ import pprint
17
17
  import re # noqa: F401
18
18
  import json
19
19
 
20
+ from datetime import datetime
20
21
  from pydantic import BaseModel, ConfigDict, Field, StrictBool, StrictInt, StrictStr
21
22
  from typing import Any, ClassVar, Dict, List, Optional
22
23
  from typing import Optional, Set
@@ -26,16 +27,29 @@ class SnapshotRetrieveFields(BaseModel):
26
27
  """
27
28
  SnapshotRetrieveFields
28
29
  """ # noqa: E501
30
+ created_at: datetime = Field(description="Creation timestamp")
31
+ custom_image: Optional[StrictStr] = None
29
32
  description: StrictStr = Field(description="Description of the snapshot")
30
33
  has_floating_ip: Optional[StrictBool] = Field(default=None, description="Indicates if the VM had a floating IP assigned")
31
34
  id: StrictInt = Field(description="Snapshot ID")
32
35
  is_image: StrictBool = Field(description="Indicates if the snapshot is an image")
36
+ labels: Optional[StrictStr] = None
33
37
  name: StrictStr = Field(description="Snapshot name")
38
+ region: Optional[StrictStr] = None
34
39
  region_id: StrictInt = Field(description="Region where the snapshot will be available")
35
40
  size: StrictInt = Field(description="Size in GB of the snapshot")
36
41
  status: StrictStr = Field(description="Status of the snapshot")
42
+ updated_at: datetime = Field(description="Last update timestamp")
43
+ vm_environment: Optional[StrictStr] = None
44
+ vm_flavor: Optional[StrictStr] = None
37
45
  vm_id: StrictInt = Field(description="ID of the VM from which the snapshot is created")
38
- __properties: ClassVar[List[str]] = ["description", "has_floating_ip", "id", "is_image", "name", "region_id", "size", "status", "vm_id"]
46
+ vm_image: Optional[StrictStr] = None
47
+ vm_keypair: Optional[StrictStr] = None
48
+ vm_name: Optional[StrictStr] = None
49
+ vm_status: Optional[StrictStr] = None
50
+ volume_id: Optional[StrictStr] = None
51
+ volume_name: Optional[StrictStr] = None
52
+ __properties: ClassVar[List[str]] = ["created_at", "custom_image", "description", "has_floating_ip", "id", "is_image", "labels", "name", "region", "region_id", "size", "status", "updated_at", "vm_environment", "vm_flavor", "vm_id", "vm_image", "vm_keypair", "vm_name", "vm_status", "volume_id", "volume_name"]
39
53
 
40
54
  model_config = ConfigDict(
41
55
  populate_by_name=True,
@@ -88,15 +102,28 @@ class SnapshotRetrieveFields(BaseModel):
88
102
  return cls.model_validate(obj)
89
103
 
90
104
  _obj = cls.model_validate({
105
+ "created_at": obj.get("created_at"),
106
+ "custom_image": obj.get("custom_image"),
91
107
  "description": obj.get("description"),
92
108
  "has_floating_ip": obj.get("has_floating_ip"),
93
109
  "id": obj.get("id"),
94
110
  "is_image": obj.get("is_image"),
111
+ "labels": obj.get("labels"),
95
112
  "name": obj.get("name"),
113
+ "region": obj.get("region"),
96
114
  "region_id": obj.get("region_id"),
97
115
  "size": obj.get("size"),
98
116
  "status": obj.get("status"),
99
- "vm_id": obj.get("vm_id")
117
+ "updated_at": obj.get("updated_at"),
118
+ "vm_environment": obj.get("vm_environment"),
119
+ "vm_flavor": obj.get("vm_flavor"),
120
+ "vm_id": obj.get("vm_id"),
121
+ "vm_image": obj.get("vm_image"),
122
+ "vm_keypair": obj.get("vm_keypair"),
123
+ "vm_name": obj.get("vm_name"),
124
+ "vm_status": obj.get("vm_status"),
125
+ "volume_id": obj.get("volume_id"),
126
+ "volume_name": obj.get("volume_name")
100
127
  })
101
128
  return _obj
102
129
 
@@ -19,7 +19,7 @@ import json
19
19
 
20
20
  from pydantic import BaseModel, ConfigDict, StrictBool, StrictStr
21
21
  from typing import Any, ClassVar, Dict, List, Optional
22
- from ..models.deployment_fieldsforstartdeployments import DeploymentFieldsforstartdeployments
22
+ from ..models.deployment_fields_for_start_deployments import DeploymentFieldsForStartDeployments
23
23
  from typing import Optional, Set
24
24
  from typing_extensions import Self
25
25
 
@@ -27,7 +27,7 @@ class StartDeployment(BaseModel):
27
27
  """
28
28
  StartDeployment
29
29
  """ # noqa: E501
30
- deployment: Optional[DeploymentFieldsforstartdeployments] = None
30
+ deployment: Optional[DeploymentFieldsForStartDeployments] = None
31
31
  message: Optional[StrictStr] = None
32
32
  status: Optional[StrictBool] = None
33
33
  __properties: ClassVar[List[str]] = ["deployment", "message", "status"]
@@ -86,7 +86,7 @@ class StartDeployment(BaseModel):
86
86
  return cls.model_validate(obj)
87
87
 
88
88
  _obj = cls.model_validate({
89
- "deployment": DeploymentFieldsforstartdeployments.from_dict(obj["deployment"]) if obj.get("deployment") is not None else None,
89
+ "deployment": DeploymentFieldsForStartDeployments.from_dict(obj["deployment"]) if obj.get("deployment") is not None else None,
90
90
  "message": obj.get("message"),
91
91
  "status": obj.get("status")
92
92
  })
@@ -22,9 +22,9 @@ from typing import Any, ClassVar, Dict, List
22
22
  from typing import Optional, Set
23
23
  from typing_extensions import Self
24
24
 
25
- class Subscribeorunsubscribeupdatepayload(BaseModel):
25
+ class SubscribeOrUnsubscribeUpdatePayload(BaseModel):
26
26
  """
27
- Subscribeorunsubscribeupdatepayload
27
+ SubscribeOrUnsubscribeUpdatePayload
28
28
  """ # noqa: E501
29
29
  subscribe: StrictBool = Field(description="`false` indicates that the user will no longer receive notifications for this specific threshold, whereas `true` signifies that the user will receive notification emails.")
30
30
  __properties: ClassVar[List[str]] = ["subscribe"]
@@ -47,7 +47,7 @@ class Subscribeorunsubscribeupdatepayload(BaseModel):
47
47
 
48
48
  @classmethod
49
49
  def from_json(cls, json_str: str) -> Optional[Self]:
50
- """Create an instance of Subscribeorunsubscribeupdatepayload from a JSON string"""
50
+ """Create an instance of SubscribeOrUnsubscribeUpdatePayload from a JSON string"""
51
51
  return cls.from_dict(json.loads(json_str))
52
52
 
53
53
  def to_dict(self) -> Dict[str, Any]:
@@ -72,7 +72,7 @@ class Subscribeorunsubscribeupdatepayload(BaseModel):
72
72
 
73
73
  @classmethod
74
74
  def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]:
75
- """Create an instance of Subscribeorunsubscribeupdatepayload from a dict"""
75
+ """Create an instance of SubscribeOrUnsubscribeUpdatePayload from a dict"""
76
76
  if obj is None:
77
77
  return None
78
78
 
@@ -0,0 +1,95 @@
1
+ # coding: utf-8
2
+
3
+ """
4
+ Infrahub-API
5
+
6
+ Leverage the Infrahub API and Hyperstack platform to easily create, manage, and scale powerful GPU virtual machines and their associated resources. Access this SDK to automate the deployment of your workloads and streamline your infrastructure management. To contribute, please raise an issue with a bug report, feature request, feedback, or general inquiry.
7
+
8
+ The version of the OpenAPI document: 1.0
9
+ Generated by OpenAPI Generator (https://openapi-generator.tech)
10
+
11
+ Do not edit the class manually.
12
+ """ # noqa: E501
13
+
14
+
15
+ from __future__ import annotations
16
+ import pprint
17
+ import re # noqa: F401
18
+ import json
19
+
20
+ from pydantic import BaseModel, ConfigDict, StrictBool, StrictStr
21
+ from typing import Any, ClassVar, Dict, List, Optional
22
+ from ..models.billing_history_serverless_inference import BillingHistoryServerlessInference
23
+ from typing import Optional, Set
24
+ from typing_extensions import Self
25
+
26
+ class TokenBasedBillingHistoryResponse(BaseModel):
27
+ """
28
+ TokenBasedBillingHistoryResponse
29
+ """ # noqa: E501
30
+ billing_history_serverless_inference: Optional[BillingHistoryServerlessInference] = None
31
+ message: Optional[StrictStr] = None
32
+ success: Optional[StrictBool] = None
33
+ __properties: ClassVar[List[str]] = ["billing_history_serverless_inference", "message", "success"]
34
+
35
+ model_config = ConfigDict(
36
+ populate_by_name=True,
37
+ validate_assignment=True,
38
+ protected_namespaces=(),
39
+ )
40
+
41
+
42
+ def to_str(self) -> str:
43
+ """Returns the string representation of the model using alias"""
44
+ return pprint.pformat(self.model_dump(by_alias=True))
45
+
46
+ def to_json(self) -> str:
47
+ """Returns the JSON representation of the model using alias"""
48
+ # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead
49
+ return json.dumps(self.to_dict())
50
+
51
+ @classmethod
52
+ def from_json(cls, json_str: str) -> Optional[Self]:
53
+ """Create an instance of TokenBasedBillingHistoryResponse from a JSON string"""
54
+ return cls.from_dict(json.loads(json_str))
55
+
56
+ def to_dict(self) -> Dict[str, Any]:
57
+ """Return the dictionary representation of the model using alias.
58
+
59
+ This has the following differences from calling pydantic's
60
+ `self.model_dump(by_alias=True)`:
61
+
62
+ * `None` is only added to the output dict for nullable fields that
63
+ were set at model initialization. Other fields with value `None`
64
+ are ignored.
65
+ """
66
+ excluded_fields: Set[str] = set([
67
+ ])
68
+
69
+ _dict = self.model_dump(
70
+ by_alias=True,
71
+ exclude=excluded_fields,
72
+ exclude_none=True,
73
+ )
74
+ # override the default output from pydantic by calling `to_dict()` of billing_history_serverless_inference
75
+ if self.billing_history_serverless_inference:
76
+ _dict['billing_history_serverless_inference'] = self.billing_history_serverless_inference.to_dict()
77
+ return _dict
78
+
79
+ @classmethod
80
+ def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]:
81
+ """Create an instance of TokenBasedBillingHistoryResponse from a dict"""
82
+ if obj is None:
83
+ return None
84
+
85
+ if not isinstance(obj, dict):
86
+ return cls.model_validate(obj)
87
+
88
+ _obj = cls.model_validate({
89
+ "billing_history_serverless_inference": BillingHistoryServerlessInference.from_dict(obj["billing_history_serverless_inference"]) if obj.get("billing_history_serverless_inference") is not None else None,
90
+ "message": obj.get("message"),
91
+ "success": obj.get("success")
92
+ })
93
+ return _obj
94
+
95
+
@@ -23,9 +23,9 @@ from ..models.keypair_fields import KeypairFields
23
23
  from typing import Optional, Set
24
24
  from typing_extensions import Self
25
25
 
26
- class UpdateKeypairnameresponse(BaseModel):
26
+ class UpdateKeypairNameResponse(BaseModel):
27
27
  """
28
- UpdateKeypairnameresponse
28
+ UpdateKeypairNameResponse
29
29
  """ # noqa: E501
30
30
  keypair: Optional[KeypairFields] = None
31
31
  message: Optional[StrictStr] = None
@@ -50,7 +50,7 @@ class UpdateKeypairnameresponse(BaseModel):
50
50
 
51
51
  @classmethod
52
52
  def from_json(cls, json_str: str) -> Optional[Self]:
53
- """Create an instance of UpdateKeypairnameresponse from a JSON string"""
53
+ """Create an instance of UpdateKeypairNameResponse from a JSON string"""
54
54
  return cls.from_dict(json.loads(json_str))
55
55
 
56
56
  def to_dict(self) -> Dict[str, Any]:
@@ -78,7 +78,7 @@ class UpdateKeypairnameresponse(BaseModel):
78
78
 
79
79
  @classmethod
80
80
  def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]:
81
- """Create an instance of UpdateKeypairnameresponse from a dict"""
81
+ """Create an instance of UpdateKeypairNameResponse from a dict"""
82
82
  if obj is None:
83
83
  return None
84
84
 
@@ -0,0 +1,87 @@
1
+ # coding: utf-8
2
+
3
+ """
4
+ Infrahub-API
5
+
6
+ Leverage the Infrahub API and Hyperstack platform to easily create, manage, and scale powerful GPU virtual machines and their associated resources. Access this SDK to automate the deployment of your workloads and streamline your infrastructure management. To contribute, please raise an issue with a bug report, feature request, feedback, or general inquiry.
7
+
8
+ The version of the OpenAPI document: 1.0
9
+ Generated by OpenAPI Generator (https://openapi-generator.tech)
10
+
11
+ Do not edit the class manually.
12
+ """ # noqa: E501
13
+
14
+
15
+ from __future__ import annotations
16
+ import pprint
17
+ import re # noqa: F401
18
+ import json
19
+
20
+ from pydantic import BaseModel, ConfigDict, StrictBool
21
+ from typing import Any, ClassVar, Dict, List, Optional
22
+ from typing import Optional, Set
23
+ from typing_extensions import Self
24
+
25
+ class UpdateVolumeAttachmentPayload(BaseModel):
26
+ """
27
+ UpdateVolumeAttachmentPayload
28
+ """ # noqa: E501
29
+ protected: Optional[StrictBool] = None
30
+ __properties: ClassVar[List[str]] = ["protected"]
31
+
32
+ model_config = ConfigDict(
33
+ populate_by_name=True,
34
+ validate_assignment=True,
35
+ protected_namespaces=(),
36
+ )
37
+
38
+
39
+ def to_str(self) -> str:
40
+ """Returns the string representation of the model using alias"""
41
+ return pprint.pformat(self.model_dump(by_alias=True))
42
+
43
+ def to_json(self) -> str:
44
+ """Returns the JSON representation of the model using alias"""
45
+ # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead
46
+ return json.dumps(self.to_dict())
47
+
48
+ @classmethod
49
+ def from_json(cls, json_str: str) -> Optional[Self]:
50
+ """Create an instance of UpdateVolumeAttachmentPayload from a JSON string"""
51
+ return cls.from_dict(json.loads(json_str))
52
+
53
+ def to_dict(self) -> Dict[str, Any]:
54
+ """Return the dictionary representation of the model using alias.
55
+
56
+ This has the following differences from calling pydantic's
57
+ `self.model_dump(by_alias=True)`:
58
+
59
+ * `None` is only added to the output dict for nullable fields that
60
+ were set at model initialization. Other fields with value `None`
61
+ are ignored.
62
+ """
63
+ excluded_fields: Set[str] = set([
64
+ ])
65
+
66
+ _dict = self.model_dump(
67
+ by_alias=True,
68
+ exclude=excluded_fields,
69
+ exclude_none=True,
70
+ )
71
+ return _dict
72
+
73
+ @classmethod
74
+ def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]:
75
+ """Create an instance of UpdateVolumeAttachmentPayload from a dict"""
76
+ if obj is None:
77
+ return None
78
+
79
+ if not isinstance(obj, dict):
80
+ return cls.model_validate(obj)
81
+
82
+ _obj = cls.model_validate({
83
+ "protected": obj.get("protected")
84
+ })
85
+ return _obj
86
+
87
+
@@ -22,12 +22,12 @@ from typing import Any, ClassVar, Dict, List
22
22
  from typing import Optional, Set
23
23
  from typing_extensions import Self
24
24
 
25
- class VerifyApiKeyPayload(BaseModel):
25
+ class UpdateVolumePayload(BaseModel):
26
26
  """
27
- VerifyApiKeyPayload
27
+ UpdateVolumePayload
28
28
  """ # noqa: E501
29
- api_key: StrictStr = Field(description="The direction of traffic that the firewall rule applies to.")
30
- __properties: ClassVar[List[str]] = ["api_key"]
29
+ environment_name: StrictStr = Field(description="The name of the target environment to move the volume to. The target environment must be in the same region as the current environment.")
30
+ __properties: ClassVar[List[str]] = ["environment_name"]
31
31
 
32
32
  model_config = ConfigDict(
33
33
  populate_by_name=True,
@@ -47,7 +47,7 @@ class VerifyApiKeyPayload(BaseModel):
47
47
 
48
48
  @classmethod
49
49
  def from_json(cls, json_str: str) -> Optional[Self]:
50
- """Create an instance of VerifyApiKeyPayload from a JSON string"""
50
+ """Create an instance of UpdateVolumePayload from a JSON string"""
51
51
  return cls.from_dict(json.loads(json_str))
52
52
 
53
53
  def to_dict(self) -> Dict[str, Any]:
@@ -72,7 +72,7 @@ class VerifyApiKeyPayload(BaseModel):
72
72
 
73
73
  @classmethod
74
74
  def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]:
75
- """Create an instance of VerifyApiKeyPayload from a dict"""
75
+ """Create an instance of UpdateVolumePayload from a dict"""
76
76
  if obj is None:
77
77
  return None
78
78
 
@@ -80,7 +80,7 @@ class VerifyApiKeyPayload(BaseModel):
80
80
  return cls.model_validate(obj)
81
81
 
82
82
  _obj = cls.model_validate({
83
- "api_key": obj.get("api_key")
83
+ "environment_name": obj.get("environment_name")
84
84
  })
85
85
  return _obj
86
86
 
@@ -17,20 +17,21 @@ import pprint
17
17
  import re # noqa: F401
18
18
  import json
19
19
 
20
- from pydantic import BaseModel, ConfigDict, StrictBool, StrictStr
20
+ from pydantic import BaseModel, ConfigDict, Field, StrictBool, StrictStr
21
21
  from typing import Any, ClassVar, Dict, List, Optional
22
- from ..models.single_visibility_user_response import SingleVisibilityUserResponse
22
+ from ..models.volume_fields import VolumeFields
23
23
  from typing import Optional, Set
24
24
  from typing_extensions import Self
25
25
 
26
- class StockVisibilityUserListResponse(BaseModel):
26
+ class UpdateVolumeResponse(BaseModel):
27
27
  """
28
- StockVisibilityUserListResponse
28
+ UpdateVolumeResponse
29
29
  """ # noqa: E501
30
30
  message: Optional[StrictStr] = None
31
31
  status: Optional[StrictBool] = None
32
- users: Optional[List[SingleVisibilityUserResponse]] = None
33
- __properties: ClassVar[List[str]] = ["message", "status", "users"]
32
+ updates: Optional[Dict[str, Any]] = Field(default=None, description="Summary of fields that were updated")
33
+ volume: Optional[VolumeFields] = None
34
+ __properties: ClassVar[List[str]] = ["message", "status", "updates", "volume"]
34
35
 
35
36
  model_config = ConfigDict(
36
37
  populate_by_name=True,
@@ -50,7 +51,7 @@ class StockVisibilityUserListResponse(BaseModel):
50
51
 
51
52
  @classmethod
52
53
  def from_json(cls, json_str: str) -> Optional[Self]:
53
- """Create an instance of StockVisibilityUserListResponse from a JSON string"""
54
+ """Create an instance of UpdateVolumeResponse from a JSON string"""
54
55
  return cls.from_dict(json.loads(json_str))
55
56
 
56
57
  def to_dict(self) -> Dict[str, Any]:
@@ -71,18 +72,14 @@ class StockVisibilityUserListResponse(BaseModel):
71
72
  exclude=excluded_fields,
72
73
  exclude_none=True,
73
74
  )
74
- # override the default output from pydantic by calling `to_dict()` of each item in users (list)
75
- _items = []
76
- if self.users:
77
- for _item_users in self.users:
78
- if _item_users:
79
- _items.append(_item_users.to_dict())
80
- _dict['users'] = _items
75
+ # override the default output from pydantic by calling `to_dict()` of volume
76
+ if self.volume:
77
+ _dict['volume'] = self.volume.to_dict()
81
78
  return _dict
82
79
 
83
80
  @classmethod
84
81
  def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]:
85
- """Create an instance of StockVisibilityUserListResponse from a dict"""
82
+ """Create an instance of UpdateVolumeResponse from a dict"""
86
83
  if obj is None:
87
84
  return None
88
85
 
@@ -92,7 +89,8 @@ class StockVisibilityUserListResponse(BaseModel):
92
89
  _obj = cls.model_validate({
93
90
  "message": obj.get("message"),
94
91
  "status": obj.get("status"),
95
- "users": [SingleVisibilityUserResponse.from_dict(_item) for _item in obj["users"]] if obj.get("users") is not None else None
92
+ "updates": obj.get("updates"),
93
+ "volume": VolumeFields.from_dict(obj["volume"]) if obj.get("volume") is not None else None
96
94
  })
97
95
  return _obj
98
96