waldur-api-client 7.8.4__py3-none-any.whl → 7.8.5__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 waldur-api-client might be problematic. Click here for more details.

Files changed (257) hide show
  1. waldur_api_client/api/backend_resources/backend_resources_import_resource.py +3 -3
  2. waldur_api_client/api/booking_resources/booking_resources_count.py +90 -0
  3. waldur_api_client/api/booking_resources/booking_resources_list.py +90 -0
  4. waldur_api_client/api/call_managing_organisations/call_managing_organisations_add_user.py +17 -10
  5. waldur_api_client/api/customers/customers_add_user.py +17 -10
  6. waldur_api_client/api/marketplace_component_usages/marketplace_component_usages_count.py +30 -0
  7. waldur_api_client/api/marketplace_component_usages/marketplace_component_usages_list.py +30 -0
  8. waldur_api_client/api/marketplace_customer_component_usage_policies/__init__.py +1 -0
  9. waldur_api_client/api/marketplace_customer_component_usage_policies/marketplace_customer_component_usage_policies_actions_count.py +125 -0
  10. waldur_api_client/api/marketplace_customer_component_usage_policies/marketplace_customer_component_usage_policies_actions_retrieve.py +119 -0
  11. waldur_api_client/api/marketplace_customer_component_usage_policies/marketplace_customer_component_usage_policies_count.py +239 -0
  12. waldur_api_client/api/marketplace_customer_component_usage_policies/marketplace_customer_component_usage_policies_create.py +152 -0
  13. waldur_api_client/api/marketplace_customer_component_usage_policies/marketplace_customer_component_usage_policies_destroy.py +89 -0
  14. waldur_api_client/api/marketplace_customer_component_usage_policies/marketplace_customer_component_usage_policies_list.py +242 -0
  15. waldur_api_client/api/marketplace_customer_component_usage_policies/marketplace_customer_component_usage_policies_partial_update.py +166 -0
  16. waldur_api_client/api/marketplace_customer_component_usage_policies/marketplace_customer_component_usage_policies_retrieve.py +144 -0
  17. waldur_api_client/api/marketplace_customer_component_usage_policies/marketplace_customer_component_usage_policies_update.py +166 -0
  18. waldur_api_client/api/marketplace_orders/marketplace_orders_set_backend_id.py +105 -0
  19. waldur_api_client/api/marketplace_plans/marketplace_plans_update_discounts.py +123 -0
  20. waldur_api_client/api/marketplace_provider_offerings/marketplace_provider_offerings_add_partition.py +168 -0
  21. waldur_api_client/api/marketplace_provider_offerings/marketplace_provider_offerings_add_software_catalog.py +168 -0
  22. waldur_api_client/api/marketplace_provider_offerings/marketplace_provider_offerings_add_user.py +19 -10
  23. waldur_api_client/api/marketplace_provider_offerings/marketplace_provider_offerings_component_stats_list.py +15 -0
  24. waldur_api_client/api/marketplace_provider_offerings/marketplace_provider_offerings_costs_list.py +15 -0
  25. waldur_api_client/api/marketplace_provider_offerings/marketplace_provider_offerings_count.py +15 -0
  26. waldur_api_client/api/marketplace_provider_offerings/marketplace_provider_offerings_create_offering_component.py +1 -1
  27. waldur_api_client/api/marketplace_provider_offerings/marketplace_provider_offerings_customers_list.py +15 -0
  28. waldur_api_client/api/marketplace_provider_offerings/marketplace_provider_offerings_groups_count.py +15 -0
  29. waldur_api_client/api/marketplace_provider_offerings/marketplace_provider_offerings_groups_list.py +15 -0
  30. waldur_api_client/api/marketplace_provider_offerings/marketplace_provider_offerings_list.py +15 -0
  31. waldur_api_client/api/marketplace_provider_offerings/marketplace_provider_offerings_remove_partition.py +107 -0
  32. waldur_api_client/api/marketplace_provider_offerings/marketplace_provider_offerings_remove_software_catalog.py +107 -0
  33. waldur_api_client/api/marketplace_provider_offerings/marketplace_provider_offerings_update_partition_partial_update.py +168 -0
  34. waldur_api_client/api/marketplace_provider_offerings/marketplace_provider_offerings_update_software_catalog_partial_update.py +168 -0
  35. waldur_api_client/api/marketplace_provider_resources/marketplace_provider_resources_count.py +90 -0
  36. waldur_api_client/api/marketplace_provider_resources/marketplace_provider_resources_list.py +90 -0
  37. waldur_api_client/api/marketplace_provider_resources/marketplace_provider_resources_set_downscaled.py +107 -0
  38. waldur_api_client/api/marketplace_provider_resources/marketplace_provider_resources_set_paused.py +107 -0
  39. waldur_api_client/api/marketplace_provider_resources/marketplace_provider_resources_set_restrict_member_access.py +107 -0
  40. waldur_api_client/api/marketplace_public_offerings/marketplace_public_offerings_count.py +15 -0
  41. waldur_api_client/api/marketplace_public_offerings/marketplace_public_offerings_list.py +15 -0
  42. waldur_api_client/api/marketplace_resources/marketplace_resources_count.py +90 -0
  43. waldur_api_client/api/marketplace_resources/marketplace_resources_list.py +90 -0
  44. waldur_api_client/api/marketplace_resources/marketplace_resources_set_downscaled.py +107 -0
  45. waldur_api_client/api/marketplace_resources/marketplace_resources_set_paused.py +107 -0
  46. waldur_api_client/api/marketplace_resources/marketplace_resources_set_restrict_member_access.py +107 -0
  47. waldur_api_client/api/marketplace_service_providers/marketplace_service_providers_add_user.py +17 -10
  48. waldur_api_client/api/marketplace_service_providers/marketplace_service_providers_customer_projects_list.py +15 -0
  49. waldur_api_client/api/marketplace_service_providers/marketplace_service_providers_offerings_list.py +15 -0
  50. waldur_api_client/api/marketplace_service_providers/marketplace_service_providers_projects_list.py +14 -24
  51. waldur_api_client/api/marketplace_service_providers/marketplace_service_providers_set_offerings_username.py +8 -67
  52. waldur_api_client/api/marketplace_site_agent_identities/__init__.py +1 -0
  53. waldur_api_client/api/marketplace_site_agent_identities/marketplace_site_agent_identities_count.py +240 -0
  54. waldur_api_client/api/marketplace_site_agent_identities/marketplace_site_agent_identities_create.py +148 -0
  55. waldur_api_client/api/marketplace_site_agent_identities/marketplace_site_agent_identities_destroy.py +89 -0
  56. waldur_api_client/api/marketplace_site_agent_identities/marketplace_site_agent_identities_list.py +241 -0
  57. waldur_api_client/api/marketplace_site_agent_identities/marketplace_site_agent_identities_register_event_subscription.py +176 -0
  58. waldur_api_client/api/marketplace_site_agent_identities/marketplace_site_agent_identities_register_service.py +170 -0
  59. waldur_api_client/api/marketplace_site_agent_identities/marketplace_site_agent_identities_retrieve.py +140 -0
  60. waldur_api_client/api/marketplace_site_agent_identities/marketplace_site_agent_identities_update.py +162 -0
  61. waldur_api_client/api/marketplace_site_agent_processors/__init__.py +1 -0
  62. waldur_api_client/api/marketplace_site_agent_processors/marketplace_site_agent_processors_count.py +240 -0
  63. waldur_api_client/api/marketplace_site_agent_processors/marketplace_site_agent_processors_list.py +241 -0
  64. waldur_api_client/api/marketplace_site_agent_processors/marketplace_site_agent_processors_retrieve.py +142 -0
  65. waldur_api_client/api/marketplace_site_agent_services/__init__.py +1 -0
  66. waldur_api_client/api/marketplace_site_agent_services/marketplace_site_agent_services_count.py +229 -0
  67. waldur_api_client/api/marketplace_site_agent_services/marketplace_site_agent_services_list.py +230 -0
  68. waldur_api_client/api/marketplace_site_agent_services/marketplace_site_agent_services_register_processor.py +172 -0
  69. waldur_api_client/api/marketplace_site_agent_services/marketplace_site_agent_services_retrieve.py +140 -0
  70. waldur_api_client/api/marketplace_site_agent_services/marketplace_site_agent_services_set_statistics.py +166 -0
  71. waldur_api_client/api/marketplace_software_catalogs/__init__.py +1 -0
  72. waldur_api_client/api/marketplace_software_catalogs/marketplace_software_catalogs_count.py +225 -0
  73. waldur_api_client/api/marketplace_software_catalogs/marketplace_software_catalogs_create.py +150 -0
  74. waldur_api_client/api/marketplace_software_catalogs/marketplace_software_catalogs_destroy.py +89 -0
  75. waldur_api_client/api/marketplace_software_catalogs/marketplace_software_catalogs_list.py +226 -0
  76. waldur_api_client/api/marketplace_software_catalogs/marketplace_software_catalogs_partial_update.py +164 -0
  77. waldur_api_client/api/marketplace_software_catalogs/marketplace_software_catalogs_retrieve.py +142 -0
  78. waldur_api_client/api/marketplace_software_catalogs/marketplace_software_catalogs_update.py +164 -0
  79. waldur_api_client/api/marketplace_software_packages/__init__.py +1 -0
  80. waldur_api_client/api/marketplace_software_packages/marketplace_software_packages_count.py +352 -0
  81. waldur_api_client/api/marketplace_software_packages/marketplace_software_packages_create.py +150 -0
  82. waldur_api_client/api/marketplace_software_packages/marketplace_software_packages_destroy.py +89 -0
  83. waldur_api_client/api/marketplace_software_packages/marketplace_software_packages_list.py +353 -0
  84. waldur_api_client/api/marketplace_software_packages/marketplace_software_packages_partial_update.py +164 -0
  85. waldur_api_client/api/marketplace_software_packages/marketplace_software_packages_retrieve.py +142 -0
  86. waldur_api_client/api/marketplace_software_packages/marketplace_software_packages_update.py +164 -0
  87. waldur_api_client/api/marketplace_software_targets/__init__.py +1 -0
  88. waldur_api_client/api/marketplace_software_targets/marketplace_software_targets_count.py +313 -0
  89. waldur_api_client/api/marketplace_software_targets/marketplace_software_targets_create.py +117 -0
  90. waldur_api_client/api/marketplace_software_targets/marketplace_software_targets_destroy.py +89 -0
  91. waldur_api_client/api/marketplace_software_targets/marketplace_software_targets_list.py +314 -0
  92. waldur_api_client/api/marketplace_software_targets/marketplace_software_targets_partial_update.py +142 -0
  93. waldur_api_client/api/marketplace_software_targets/marketplace_software_targets_retrieve.py +142 -0
  94. waldur_api_client/api/marketplace_software_targets/marketplace_software_targets_update.py +142 -0
  95. waldur_api_client/api/marketplace_software_versions/__init__.py +1 -0
  96. waldur_api_client/api/marketplace_software_versions/marketplace_software_versions_count.py +310 -0
  97. waldur_api_client/api/marketplace_software_versions/marketplace_software_versions_create.py +117 -0
  98. waldur_api_client/api/marketplace_software_versions/marketplace_software_versions_destroy.py +89 -0
  99. waldur_api_client/api/marketplace_software_versions/marketplace_software_versions_list.py +311 -0
  100. waldur_api_client/api/marketplace_software_versions/marketplace_software_versions_partial_update.py +142 -0
  101. waldur_api_client/api/marketplace_software_versions/marketplace_software_versions_retrieve.py +142 -0
  102. waldur_api_client/api/marketplace_software_versions/marketplace_software_versions_update.py +142 -0
  103. waldur_api_client/api/onboarding_justifications/onboarding_justifications_approve.py +168 -0
  104. waldur_api_client/api/onboarding_justifications/onboarding_justifications_reject.py +168 -0
  105. waldur_api_client/api/projects/projects_add_user.py +17 -10
  106. waldur_api_client/api/projects/projects_count.py +30 -0
  107. waldur_api_client/api/projects/projects_list.py +30 -0
  108. waldur_api_client/api/projects/projects_move_project.py +19 -10
  109. waldur_api_client/api/projects/projects_recover.py +166 -0
  110. waldur_api_client/api/proposal_proposals/proposal_proposals_add_user.py +17 -10
  111. waldur_api_client/api/proposal_protected_calls/proposal_protected_calls_add_user.py +17 -10
  112. waldur_api_client/api/remote_waldur_api/remote_waldur_api_pull_resource_robot_accounts.py +88 -0
  113. waldur_api_client/models/__init__.py +152 -4
  114. waldur_api_client/models/agent_event_subscription_create_request.py +71 -0
  115. waldur_api_client/models/agent_identity.py +211 -0
  116. waldur_api_client/models/agent_identity_request.py +157 -0
  117. waldur_api_client/models/agent_processor.py +170 -0
  118. waldur_api_client/models/agent_processor_create_request.py +89 -0
  119. waldur_api_client/models/agent_service.py +172 -0
  120. waldur_api_client/models/agent_service_create_request.py +81 -0
  121. waldur_api_client/models/agent_service_state.py +10 -0
  122. waldur_api_client/models/agent_service_statistics_request.py +59 -0
  123. waldur_api_client/models/base_provider_plan.py +21 -0
  124. waldur_api_client/models/base_public_plan.py +21 -0
  125. waldur_api_client/models/booking_offerings_list_field_item.py +2 -0
  126. waldur_api_client/models/booking_offerings_retrieve_field_item.py +2 -0
  127. waldur_api_client/models/booking_resource.py +33 -0
  128. waldur_api_client/models/booking_resource_renewal_date_type_0.py +53 -0
  129. waldur_api_client/models/booking_resources_list_field_item.py +1 -0
  130. waldur_api_client/models/booking_resources_retrieve_field_item.py +1 -0
  131. waldur_api_client/models/call_managing_organisations_add_user_response_400.py +65 -0
  132. waldur_api_client/models/constance_settings.py +81 -45
  133. waldur_api_client/models/constance_settings_request.py +81 -45
  134. waldur_api_client/models/constance_settings_request_form.py +81 -45
  135. waldur_api_client/models/constance_settings_request_multipart.py +134 -71
  136. waldur_api_client/models/customer_component_usage_policy.py +175 -0
  137. waldur_api_client/models/customer_component_usage_policy_request.py +102 -0
  138. waldur_api_client/models/customers_add_user_response_400.py +65 -0
  139. waldur_api_client/models/discount_config_request.py +91 -0
  140. waldur_api_client/models/discounts_update_request.py +65 -0
  141. waldur_api_client/models/discounts_update_request_discounts.py +57 -0
  142. waldur_api_client/models/issue.py +0 -25
  143. waldur_api_client/models/managed_rancher_cluster_resources_list_field_item.py +1 -0
  144. waldur_api_client/models/managed_rancher_cluster_resources_retrieve_field_item.py +1 -0
  145. waldur_api_client/models/marketplace_orders_count_state_item.py +1 -0
  146. waldur_api_client/models/marketplace_orders_list_field_item.py +2 -0
  147. waldur_api_client/models/marketplace_orders_list_state_item.py +1 -0
  148. waldur_api_client/models/marketplace_orders_retrieve_field_item.py +2 -0
  149. waldur_api_client/models/marketplace_provider_offerings_add_user_response_400.py +65 -0
  150. waldur_api_client/models/marketplace_provider_offerings_list_course_accounts_retrieve_field_item.py +2 -0
  151. waldur_api_client/models/marketplace_provider_offerings_list_customer_service_accounts_retrieve_field_item.py +2 -0
  152. waldur_api_client/models/marketplace_provider_offerings_list_field_item.py +2 -0
  153. waldur_api_client/models/marketplace_provider_offerings_list_project_service_accounts_retrieve_field_item.py +2 -0
  154. waldur_api_client/models/marketplace_provider_offerings_retrieve_field_item.py +2 -0
  155. waldur_api_client/models/marketplace_provider_offerings_stats_retrieve_field_item.py +2 -0
  156. waldur_api_client/models/marketplace_provider_offerings_user_has_resource_access_retrieve_field_item.py +2 -0
  157. waldur_api_client/models/marketplace_provider_resources_details_retrieve_field_item.py +1 -0
  158. waldur_api_client/models/marketplace_provider_resources_list_field_item.py +1 -0
  159. waldur_api_client/models/marketplace_provider_resources_retrieve_field_item.py +1 -0
  160. waldur_api_client/models/marketplace_public_offerings_list_field_item.py +2 -0
  161. waldur_api_client/models/marketplace_public_offerings_retrieve_field_item.py +2 -0
  162. waldur_api_client/models/marketplace_resources_details_retrieve_field_item.py +1 -0
  163. waldur_api_client/models/marketplace_resources_list_field_item.py +1 -0
  164. waldur_api_client/models/marketplace_resources_retrieve_field_item.py +1 -0
  165. waldur_api_client/models/marketplace_service_providers_add_user_response_400.py +65 -0
  166. waldur_api_client/models/marketplace_site_agent_services_count_state_item.py +10 -0
  167. waldur_api_client/models/marketplace_site_agent_services_list_state_item.py +10 -0
  168. waldur_api_client/models/marketplace_software_catalogs_count_o_item.py +15 -0
  169. waldur_api_client/models/marketplace_software_catalogs_list_o_item.py +15 -0
  170. waldur_api_client/models/marketplace_software_packages_count_o_item.py +17 -0
  171. waldur_api_client/models/marketplace_software_packages_list_o_item.py +17 -0
  172. waldur_api_client/models/marketplace_software_targets_count_o_item.py +15 -0
  173. waldur_api_client/models/marketplace_software_targets_list_o_item.py +15 -0
  174. waldur_api_client/models/marketplace_software_versions_count_o_item.py +15 -0
  175. waldur_api_client/models/marketplace_software_versions_list_o_item.py +15 -0
  176. waldur_api_client/models/merged_plugin_options.py +47 -8
  177. waldur_api_client/models/merged_plugin_options_request.py +47 -8
  178. waldur_api_client/models/nested_agent_processor.py +154 -0
  179. waldur_api_client/models/nested_agent_service.py +134 -0
  180. waldur_api_client/models/nested_agent_service_request.py +90 -0
  181. waldur_api_client/models/nested_customer_usage_policy_component.py +103 -0
  182. waldur_api_client/models/nested_customer_usage_policy_component_request.py +87 -0
  183. waldur_api_client/models/nested_partition.py +412 -0
  184. waldur_api_client/models/nested_partition_request.py +397 -0
  185. waldur_api_client/models/nested_plan_component.py +155 -0
  186. waldur_api_client/models/nested_plan_component_request.py +128 -0
  187. waldur_api_client/models/nested_software_catalog.py +134 -0
  188. waldur_api_client/models/nested_software_catalog_catalog.py +86 -0
  189. waldur_api_client/models/nested_software_catalog_partition.py +86 -0
  190. waldur_api_client/models/nested_software_catalog_request.py +68 -0
  191. waldur_api_client/models/nested_software_target.py +84 -0
  192. waldur_api_client/models/nested_software_target_request.py +75 -0
  193. waldur_api_client/models/nested_software_version.py +124 -0
  194. waldur_api_client/models/nested_software_version_request.py +93 -0
  195. waldur_api_client/models/observable_object_type_enum.py +14 -0
  196. waldur_api_client/models/offering.py +42 -0
  197. waldur_api_client/models/offering_create.py +36 -0
  198. waldur_api_client/models/offering_partition.py +440 -0
  199. waldur_api_client/models/offering_partition_request.py +406 -0
  200. waldur_api_client/models/offering_software_catalog.py +176 -0
  201. waldur_api_client/models/offering_software_catalog_request.py +118 -0
  202. waldur_api_client/models/onboarding_justification.py +35 -6
  203. waldur_api_client/models/onboarding_justification_create_request.py +8 -5
  204. waldur_api_client/models/onboarding_justification_request.py +20 -6
  205. waldur_api_client/models/onboarding_justification_review_request.py +59 -0
  206. waldur_api_client/models/order_backend_id_request.py +59 -0
  207. waldur_api_client/models/order_details.py +39 -0
  208. waldur_api_client/models/order_state.py +1 -0
  209. waldur_api_client/models/patched_customer_component_usage_policy_request.py +104 -0
  210. waldur_api_client/models/patched_offering_partition_request.py +412 -0
  211. waldur_api_client/models/patched_offering_software_catalog_update_request.py +131 -0
  212. waldur_api_client/models/patched_onboarding_justification_request.py +16 -5
  213. waldur_api_client/models/patched_project_request.py +9 -0
  214. waldur_api_client/models/patched_project_request_form.py +9 -0
  215. waldur_api_client/models/patched_project_request_multipart.py +12 -0
  216. waldur_api_client/models/patched_software_catalog_request.py +86 -0
  217. waldur_api_client/models/patched_software_package_request.py +86 -0
  218. waldur_api_client/models/plan_component.py +40 -0
  219. waldur_api_client/models/project.py +27 -0
  220. waldur_api_client/models/project_recovery_request.py +70 -0
  221. waldur_api_client/models/project_request.py +9 -0
  222. waldur_api_client/models/project_request_form.py +9 -0
  223. waldur_api_client/models/project_request_multipart.py +12 -0
  224. waldur_api_client/models/project_user.py +21 -4
  225. waldur_api_client/models/projects_add_user_response_400.py +65 -0
  226. waldur_api_client/models/projects_list_field_item.py +3 -0
  227. waldur_api_client/models/projects_move_project_response_400.py +65 -0
  228. waldur_api_client/models/projects_retrieve_field_item.py +3 -0
  229. waldur_api_client/models/proposal_proposals_add_user_response_400.py +65 -0
  230. waldur_api_client/models/proposal_protected_calls_add_user_response_400.py +65 -0
  231. waldur_api_client/models/provider_offering_details.py +42 -0
  232. waldur_api_client/models/provider_plan_details.py +18 -0
  233. waldur_api_client/models/public_offering_details.py +42 -0
  234. waldur_api_client/models/remote_resource_order_remote_state_enum.py +1 -0
  235. waldur_api_client/models/{set_offerings_username.py → remove_partition_request.py} +11 -19
  236. waldur_api_client/models/remove_software_catalog_request.py +60 -0
  237. waldur_api_client/models/resource.py +33 -0
  238. waldur_api_client/models/resource_downscaled_request.py +59 -0
  239. waldur_api_client/models/resource_paused_request.py +59 -0
  240. waldur_api_client/models/resource_renewal_date_type_0.py +53 -0
  241. waldur_api_client/models/resource_restrict_member_access_request.py +59 -0
  242. waldur_api_client/models/software_catalog.py +130 -0
  243. waldur_api_client/models/software_catalog_request.py +87 -0
  244. waldur_api_client/models/software_catalog_uuid.py +60 -0
  245. waldur_api_client/models/software_package.py +168 -0
  246. waldur_api_client/models/software_package_request.py +87 -0
  247. waldur_api_client/models/software_target.py +110 -0
  248. waldur_api_client/models/software_version.py +135 -0
  249. waldur_api_client/models/user.py +20 -0
  250. waldur_api_client/models/users_list_field_item.py +1 -0
  251. waldur_api_client/models/users_me_retrieve_field_item.py +1 -0
  252. waldur_api_client/models/users_retrieve_field_item.py +1 -0
  253. {waldur_api_client-7.8.4.dist-info → waldur_api_client-7.8.5.dist-info}/METADATA +1 -1
  254. {waldur_api_client-7.8.4.dist-info → waldur_api_client-7.8.5.dist-info}/RECORD +256 -103
  255. waldur_api_client/models/marketplace_service_providers_projects_list_field_item.py +0 -37
  256. {waldur_api_client-7.8.4.dist-info → waldur_api_client-7.8.5.dist-info}/WHEEL +0 -0
  257. {waldur_api_client-7.8.4.dist-info → waldur_api_client-7.8.5.dist-info}/licenses/LICENSE +0 -0
@@ -0,0 +1,406 @@
1
+ from collections.abc import Mapping
2
+ from typing import Any, TypeVar, Union, cast
3
+ from uuid import UUID
4
+
5
+ from attrs import define as _attrs_define
6
+ from attrs import field as _attrs_field
7
+
8
+ from ..types import UNSET, Unset
9
+
10
+ T = TypeVar("T", bound="OfferingPartitionRequest")
11
+
12
+
13
+ @_attrs_define
14
+ class OfferingPartitionRequest:
15
+ """
16
+ Attributes:
17
+ offering (UUID):
18
+ partition_name (str): Name of the SLURM partition
19
+ cpu_bind (Union[None, Unset, int]): Default task binding policy (SLURM cpu_bind)
20
+ def_cpu_per_gpu (Union[None, Unset, int]): Default CPUs allocated per GPU
21
+ max_cpus_per_node (Union[None, Unset, int]): Maximum allocated CPUs per node
22
+ max_cpus_per_socket (Union[None, Unset, int]): Maximum allocated CPUs per socket
23
+ def_mem_per_cpu (Union[None, Unset, int]): Default memory per CPU in MB
24
+ def_mem_per_gpu (Union[None, Unset, int]): Default memory per GPU in MB
25
+ def_mem_per_node (Union[None, Unset, int]): Default memory per node in MB
26
+ max_mem_per_cpu (Union[None, Unset, int]): Maximum memory per CPU in MB
27
+ max_mem_per_node (Union[None, Unset, int]): Maximum memory per node in MB
28
+ default_time (Union[None, Unset, int]): Default time limit in minutes
29
+ max_time (Union[None, Unset, int]): Maximum time limit in minutes
30
+ grace_time (Union[None, Unset, int]): Preemption grace time in seconds
31
+ max_nodes (Union[None, Unset, int]): Maximum nodes per job
32
+ min_nodes (Union[None, Unset, int]): Minimum nodes per job
33
+ exclusive_topo (Union[Unset, bool]): Exclusive topology access required
34
+ exclusive_user (Union[Unset, bool]): Exclusive user access required
35
+ priority_tier (Union[None, Unset, int]): Priority tier for scheduling and preemption
36
+ qos (Union[Unset, str]): Quality of Service (QOS) name
37
+ req_resv (Union[Unset, bool]): Require reservation for job allocation
38
+ """
39
+
40
+ offering: UUID
41
+ partition_name: str
42
+ cpu_bind: Union[None, Unset, int] = UNSET
43
+ def_cpu_per_gpu: Union[None, Unset, int] = UNSET
44
+ max_cpus_per_node: Union[None, Unset, int] = UNSET
45
+ max_cpus_per_socket: Union[None, Unset, int] = UNSET
46
+ def_mem_per_cpu: Union[None, Unset, int] = UNSET
47
+ def_mem_per_gpu: Union[None, Unset, int] = UNSET
48
+ def_mem_per_node: Union[None, Unset, int] = UNSET
49
+ max_mem_per_cpu: Union[None, Unset, int] = UNSET
50
+ max_mem_per_node: Union[None, Unset, int] = UNSET
51
+ default_time: Union[None, Unset, int] = UNSET
52
+ max_time: Union[None, Unset, int] = UNSET
53
+ grace_time: Union[None, Unset, int] = UNSET
54
+ max_nodes: Union[None, Unset, int] = UNSET
55
+ min_nodes: Union[None, Unset, int] = UNSET
56
+ exclusive_topo: Union[Unset, bool] = UNSET
57
+ exclusive_user: Union[Unset, bool] = UNSET
58
+ priority_tier: Union[None, Unset, int] = UNSET
59
+ qos: Union[Unset, str] = UNSET
60
+ req_resv: Union[Unset, bool] = UNSET
61
+ additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict)
62
+
63
+ def to_dict(self) -> dict[str, Any]:
64
+ offering = str(self.offering)
65
+
66
+ partition_name = self.partition_name
67
+
68
+ cpu_bind: Union[None, Unset, int]
69
+ if isinstance(self.cpu_bind, Unset):
70
+ cpu_bind = UNSET
71
+ else:
72
+ cpu_bind = self.cpu_bind
73
+
74
+ def_cpu_per_gpu: Union[None, Unset, int]
75
+ if isinstance(self.def_cpu_per_gpu, Unset):
76
+ def_cpu_per_gpu = UNSET
77
+ else:
78
+ def_cpu_per_gpu = self.def_cpu_per_gpu
79
+
80
+ max_cpus_per_node: Union[None, Unset, int]
81
+ if isinstance(self.max_cpus_per_node, Unset):
82
+ max_cpus_per_node = UNSET
83
+ else:
84
+ max_cpus_per_node = self.max_cpus_per_node
85
+
86
+ max_cpus_per_socket: Union[None, Unset, int]
87
+ if isinstance(self.max_cpus_per_socket, Unset):
88
+ max_cpus_per_socket = UNSET
89
+ else:
90
+ max_cpus_per_socket = self.max_cpus_per_socket
91
+
92
+ def_mem_per_cpu: Union[None, Unset, int]
93
+ if isinstance(self.def_mem_per_cpu, Unset):
94
+ def_mem_per_cpu = UNSET
95
+ else:
96
+ def_mem_per_cpu = self.def_mem_per_cpu
97
+
98
+ def_mem_per_gpu: Union[None, Unset, int]
99
+ if isinstance(self.def_mem_per_gpu, Unset):
100
+ def_mem_per_gpu = UNSET
101
+ else:
102
+ def_mem_per_gpu = self.def_mem_per_gpu
103
+
104
+ def_mem_per_node: Union[None, Unset, int]
105
+ if isinstance(self.def_mem_per_node, Unset):
106
+ def_mem_per_node = UNSET
107
+ else:
108
+ def_mem_per_node = self.def_mem_per_node
109
+
110
+ max_mem_per_cpu: Union[None, Unset, int]
111
+ if isinstance(self.max_mem_per_cpu, Unset):
112
+ max_mem_per_cpu = UNSET
113
+ else:
114
+ max_mem_per_cpu = self.max_mem_per_cpu
115
+
116
+ max_mem_per_node: Union[None, Unset, int]
117
+ if isinstance(self.max_mem_per_node, Unset):
118
+ max_mem_per_node = UNSET
119
+ else:
120
+ max_mem_per_node = self.max_mem_per_node
121
+
122
+ default_time: Union[None, Unset, int]
123
+ if isinstance(self.default_time, Unset):
124
+ default_time = UNSET
125
+ else:
126
+ default_time = self.default_time
127
+
128
+ max_time: Union[None, Unset, int]
129
+ if isinstance(self.max_time, Unset):
130
+ max_time = UNSET
131
+ else:
132
+ max_time = self.max_time
133
+
134
+ grace_time: Union[None, Unset, int]
135
+ if isinstance(self.grace_time, Unset):
136
+ grace_time = UNSET
137
+ else:
138
+ grace_time = self.grace_time
139
+
140
+ max_nodes: Union[None, Unset, int]
141
+ if isinstance(self.max_nodes, Unset):
142
+ max_nodes = UNSET
143
+ else:
144
+ max_nodes = self.max_nodes
145
+
146
+ min_nodes: Union[None, Unset, int]
147
+ if isinstance(self.min_nodes, Unset):
148
+ min_nodes = UNSET
149
+ else:
150
+ min_nodes = self.min_nodes
151
+
152
+ exclusive_topo = self.exclusive_topo
153
+
154
+ exclusive_user = self.exclusive_user
155
+
156
+ priority_tier: Union[None, Unset, int]
157
+ if isinstance(self.priority_tier, Unset):
158
+ priority_tier = UNSET
159
+ else:
160
+ priority_tier = self.priority_tier
161
+
162
+ qos = self.qos
163
+
164
+ req_resv = self.req_resv
165
+
166
+ field_dict: dict[str, Any] = {}
167
+ field_dict.update(self.additional_properties)
168
+ field_dict.update(
169
+ {
170
+ "offering": offering,
171
+ "partition_name": partition_name,
172
+ }
173
+ )
174
+ if cpu_bind is not UNSET:
175
+ field_dict["cpu_bind"] = cpu_bind
176
+ if def_cpu_per_gpu is not UNSET:
177
+ field_dict["def_cpu_per_gpu"] = def_cpu_per_gpu
178
+ if max_cpus_per_node is not UNSET:
179
+ field_dict["max_cpus_per_node"] = max_cpus_per_node
180
+ if max_cpus_per_socket is not UNSET:
181
+ field_dict["max_cpus_per_socket"] = max_cpus_per_socket
182
+ if def_mem_per_cpu is not UNSET:
183
+ field_dict["def_mem_per_cpu"] = def_mem_per_cpu
184
+ if def_mem_per_gpu is not UNSET:
185
+ field_dict["def_mem_per_gpu"] = def_mem_per_gpu
186
+ if def_mem_per_node is not UNSET:
187
+ field_dict["def_mem_per_node"] = def_mem_per_node
188
+ if max_mem_per_cpu is not UNSET:
189
+ field_dict["max_mem_per_cpu"] = max_mem_per_cpu
190
+ if max_mem_per_node is not UNSET:
191
+ field_dict["max_mem_per_node"] = max_mem_per_node
192
+ if default_time is not UNSET:
193
+ field_dict["default_time"] = default_time
194
+ if max_time is not UNSET:
195
+ field_dict["max_time"] = max_time
196
+ if grace_time is not UNSET:
197
+ field_dict["grace_time"] = grace_time
198
+ if max_nodes is not UNSET:
199
+ field_dict["max_nodes"] = max_nodes
200
+ if min_nodes is not UNSET:
201
+ field_dict["min_nodes"] = min_nodes
202
+ if exclusive_topo is not UNSET:
203
+ field_dict["exclusive_topo"] = exclusive_topo
204
+ if exclusive_user is not UNSET:
205
+ field_dict["exclusive_user"] = exclusive_user
206
+ if priority_tier is not UNSET:
207
+ field_dict["priority_tier"] = priority_tier
208
+ if qos is not UNSET:
209
+ field_dict["qos"] = qos
210
+ if req_resv is not UNSET:
211
+ field_dict["req_resv"] = req_resv
212
+
213
+ return field_dict
214
+
215
+ @classmethod
216
+ def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T:
217
+ d = dict(src_dict)
218
+ offering = UUID(d.pop("offering"))
219
+
220
+ partition_name = d.pop("partition_name")
221
+
222
+ def _parse_cpu_bind(data: object) -> Union[None, Unset, int]:
223
+ if data is None:
224
+ return data
225
+ if isinstance(data, Unset):
226
+ return data
227
+ return cast(Union[None, Unset, int], data)
228
+
229
+ cpu_bind = _parse_cpu_bind(d.pop("cpu_bind", UNSET))
230
+
231
+ def _parse_def_cpu_per_gpu(data: object) -> Union[None, Unset, int]:
232
+ if data is None:
233
+ return data
234
+ if isinstance(data, Unset):
235
+ return data
236
+ return cast(Union[None, Unset, int], data)
237
+
238
+ def_cpu_per_gpu = _parse_def_cpu_per_gpu(d.pop("def_cpu_per_gpu", UNSET))
239
+
240
+ def _parse_max_cpus_per_node(data: object) -> Union[None, Unset, int]:
241
+ if data is None:
242
+ return data
243
+ if isinstance(data, Unset):
244
+ return data
245
+ return cast(Union[None, Unset, int], data)
246
+
247
+ max_cpus_per_node = _parse_max_cpus_per_node(d.pop("max_cpus_per_node", UNSET))
248
+
249
+ def _parse_max_cpus_per_socket(data: object) -> Union[None, Unset, int]:
250
+ if data is None:
251
+ return data
252
+ if isinstance(data, Unset):
253
+ return data
254
+ return cast(Union[None, Unset, int], data)
255
+
256
+ max_cpus_per_socket = _parse_max_cpus_per_socket(d.pop("max_cpus_per_socket", UNSET))
257
+
258
+ def _parse_def_mem_per_cpu(data: object) -> Union[None, Unset, int]:
259
+ if data is None:
260
+ return data
261
+ if isinstance(data, Unset):
262
+ return data
263
+ return cast(Union[None, Unset, int], data)
264
+
265
+ def_mem_per_cpu = _parse_def_mem_per_cpu(d.pop("def_mem_per_cpu", UNSET))
266
+
267
+ def _parse_def_mem_per_gpu(data: object) -> Union[None, Unset, int]:
268
+ if data is None:
269
+ return data
270
+ if isinstance(data, Unset):
271
+ return data
272
+ return cast(Union[None, Unset, int], data)
273
+
274
+ def_mem_per_gpu = _parse_def_mem_per_gpu(d.pop("def_mem_per_gpu", UNSET))
275
+
276
+ def _parse_def_mem_per_node(data: object) -> Union[None, Unset, int]:
277
+ if data is None:
278
+ return data
279
+ if isinstance(data, Unset):
280
+ return data
281
+ return cast(Union[None, Unset, int], data)
282
+
283
+ def_mem_per_node = _parse_def_mem_per_node(d.pop("def_mem_per_node", UNSET))
284
+
285
+ def _parse_max_mem_per_cpu(data: object) -> Union[None, Unset, int]:
286
+ if data is None:
287
+ return data
288
+ if isinstance(data, Unset):
289
+ return data
290
+ return cast(Union[None, Unset, int], data)
291
+
292
+ max_mem_per_cpu = _parse_max_mem_per_cpu(d.pop("max_mem_per_cpu", UNSET))
293
+
294
+ def _parse_max_mem_per_node(data: object) -> Union[None, Unset, int]:
295
+ if data is None:
296
+ return data
297
+ if isinstance(data, Unset):
298
+ return data
299
+ return cast(Union[None, Unset, int], data)
300
+
301
+ max_mem_per_node = _parse_max_mem_per_node(d.pop("max_mem_per_node", UNSET))
302
+
303
+ def _parse_default_time(data: object) -> Union[None, Unset, int]:
304
+ if data is None:
305
+ return data
306
+ if isinstance(data, Unset):
307
+ return data
308
+ return cast(Union[None, Unset, int], data)
309
+
310
+ default_time = _parse_default_time(d.pop("default_time", UNSET))
311
+
312
+ def _parse_max_time(data: object) -> Union[None, Unset, int]:
313
+ if data is None:
314
+ return data
315
+ if isinstance(data, Unset):
316
+ return data
317
+ return cast(Union[None, Unset, int], data)
318
+
319
+ max_time = _parse_max_time(d.pop("max_time", UNSET))
320
+
321
+ def _parse_grace_time(data: object) -> Union[None, Unset, int]:
322
+ if data is None:
323
+ return data
324
+ if isinstance(data, Unset):
325
+ return data
326
+ return cast(Union[None, Unset, int], data)
327
+
328
+ grace_time = _parse_grace_time(d.pop("grace_time", UNSET))
329
+
330
+ def _parse_max_nodes(data: object) -> Union[None, Unset, int]:
331
+ if data is None:
332
+ return data
333
+ if isinstance(data, Unset):
334
+ return data
335
+ return cast(Union[None, Unset, int], data)
336
+
337
+ max_nodes = _parse_max_nodes(d.pop("max_nodes", UNSET))
338
+
339
+ def _parse_min_nodes(data: object) -> Union[None, Unset, int]:
340
+ if data is None:
341
+ return data
342
+ if isinstance(data, Unset):
343
+ return data
344
+ return cast(Union[None, Unset, int], data)
345
+
346
+ min_nodes = _parse_min_nodes(d.pop("min_nodes", UNSET))
347
+
348
+ exclusive_topo = d.pop("exclusive_topo", UNSET)
349
+
350
+ exclusive_user = d.pop("exclusive_user", UNSET)
351
+
352
+ def _parse_priority_tier(data: object) -> Union[None, Unset, int]:
353
+ if data is None:
354
+ return data
355
+ if isinstance(data, Unset):
356
+ return data
357
+ return cast(Union[None, Unset, int], data)
358
+
359
+ priority_tier = _parse_priority_tier(d.pop("priority_tier", UNSET))
360
+
361
+ qos = d.pop("qos", UNSET)
362
+
363
+ req_resv = d.pop("req_resv", UNSET)
364
+
365
+ offering_partition_request = cls(
366
+ offering=offering,
367
+ partition_name=partition_name,
368
+ cpu_bind=cpu_bind,
369
+ def_cpu_per_gpu=def_cpu_per_gpu,
370
+ max_cpus_per_node=max_cpus_per_node,
371
+ max_cpus_per_socket=max_cpus_per_socket,
372
+ def_mem_per_cpu=def_mem_per_cpu,
373
+ def_mem_per_gpu=def_mem_per_gpu,
374
+ def_mem_per_node=def_mem_per_node,
375
+ max_mem_per_cpu=max_mem_per_cpu,
376
+ max_mem_per_node=max_mem_per_node,
377
+ default_time=default_time,
378
+ max_time=max_time,
379
+ grace_time=grace_time,
380
+ max_nodes=max_nodes,
381
+ min_nodes=min_nodes,
382
+ exclusive_topo=exclusive_topo,
383
+ exclusive_user=exclusive_user,
384
+ priority_tier=priority_tier,
385
+ qos=qos,
386
+ req_resv=req_resv,
387
+ )
388
+
389
+ offering_partition_request.additional_properties = d
390
+ return offering_partition_request
391
+
392
+ @property
393
+ def additional_keys(self) -> list[str]:
394
+ return list(self.additional_properties.keys())
395
+
396
+ def __getitem__(self, key: str) -> Any:
397
+ return self.additional_properties[key]
398
+
399
+ def __setitem__(self, key: str, value: Any) -> None:
400
+ self.additional_properties[key] = value
401
+
402
+ def __delitem__(self, key: str) -> None:
403
+ del self.additional_properties[key]
404
+
405
+ def __contains__(self, key: str) -> bool:
406
+ return key in self.additional_properties
@@ -0,0 +1,176 @@
1
+ import datetime
2
+ from collections.abc import Mapping
3
+ from typing import Any, TypeVar, Union, cast
4
+ from uuid import UUID
5
+
6
+ from attrs import define as _attrs_define
7
+ from attrs import field as _attrs_field
8
+ from dateutil.parser import isoparse
9
+
10
+ from ..types import UNSET, Unset
11
+
12
+ T = TypeVar("T", bound="OfferingSoftwareCatalog")
13
+
14
+
15
+ @_attrs_define
16
+ class OfferingSoftwareCatalog:
17
+ """
18
+ Attributes:
19
+ uuid (UUID):
20
+ created (datetime.datetime):
21
+ modified (datetime.datetime):
22
+ offering (UUID):
23
+ catalog (UUID):
24
+ offering_name (str):
25
+ catalog_name (str):
26
+ catalog_version (str):
27
+ partition_name (str):
28
+ enabled_cpu_family (Union[Unset, Any]): List of enabled CPU families: ['x86_64', 'aarch64']
29
+ enabled_cpu_microarchitectures (Union[Unset, Any]): List of enabled CPU microarchitectures: ['generic', 'zen3']
30
+ partition (Union[None, UUID, Unset]):
31
+ """
32
+
33
+ uuid: UUID
34
+ created: datetime.datetime
35
+ modified: datetime.datetime
36
+ offering: UUID
37
+ catalog: UUID
38
+ offering_name: str
39
+ catalog_name: str
40
+ catalog_version: str
41
+ partition_name: str
42
+ enabled_cpu_family: Union[Unset, Any] = UNSET
43
+ enabled_cpu_microarchitectures: Union[Unset, Any] = UNSET
44
+ partition: Union[None, UUID, Unset] = UNSET
45
+ additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict)
46
+
47
+ def to_dict(self) -> dict[str, Any]:
48
+ uuid = str(self.uuid)
49
+
50
+ created = self.created.isoformat()
51
+
52
+ modified = self.modified.isoformat()
53
+
54
+ offering = str(self.offering)
55
+
56
+ catalog = str(self.catalog)
57
+
58
+ offering_name = self.offering_name
59
+
60
+ catalog_name = self.catalog_name
61
+
62
+ catalog_version = self.catalog_version
63
+
64
+ partition_name = self.partition_name
65
+
66
+ enabled_cpu_family = self.enabled_cpu_family
67
+
68
+ enabled_cpu_microarchitectures = self.enabled_cpu_microarchitectures
69
+
70
+ partition: Union[None, Unset, str]
71
+ if isinstance(self.partition, Unset):
72
+ partition = UNSET
73
+ elif isinstance(self.partition, UUID):
74
+ partition = str(self.partition)
75
+ else:
76
+ partition = self.partition
77
+
78
+ field_dict: dict[str, Any] = {}
79
+ field_dict.update(self.additional_properties)
80
+ field_dict.update(
81
+ {
82
+ "uuid": uuid,
83
+ "created": created,
84
+ "modified": modified,
85
+ "offering": offering,
86
+ "catalog": catalog,
87
+ "offering_name": offering_name,
88
+ "catalog_name": catalog_name,
89
+ "catalog_version": catalog_version,
90
+ "partition_name": partition_name,
91
+ }
92
+ )
93
+ if enabled_cpu_family is not UNSET:
94
+ field_dict["enabled_cpu_family"] = enabled_cpu_family
95
+ if enabled_cpu_microarchitectures is not UNSET:
96
+ field_dict["enabled_cpu_microarchitectures"] = enabled_cpu_microarchitectures
97
+ if partition is not UNSET:
98
+ field_dict["partition"] = partition
99
+
100
+ return field_dict
101
+
102
+ @classmethod
103
+ def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T:
104
+ d = dict(src_dict)
105
+ uuid = UUID(d.pop("uuid"))
106
+
107
+ created = isoparse(d.pop("created"))
108
+
109
+ modified = isoparse(d.pop("modified"))
110
+
111
+ offering = UUID(d.pop("offering"))
112
+
113
+ catalog = UUID(d.pop("catalog"))
114
+
115
+ offering_name = d.pop("offering_name")
116
+
117
+ catalog_name = d.pop("catalog_name")
118
+
119
+ catalog_version = d.pop("catalog_version")
120
+
121
+ partition_name = d.pop("partition_name")
122
+
123
+ enabled_cpu_family = d.pop("enabled_cpu_family", UNSET)
124
+
125
+ enabled_cpu_microarchitectures = d.pop("enabled_cpu_microarchitectures", UNSET)
126
+
127
+ def _parse_partition(data: object) -> Union[None, UUID, Unset]:
128
+ if data is None:
129
+ return data
130
+ if isinstance(data, Unset):
131
+ return data
132
+ try:
133
+ if not isinstance(data, str):
134
+ raise TypeError()
135
+ partition_type_0 = UUID(data)
136
+
137
+ return partition_type_0
138
+ except: # noqa: E722
139
+ pass
140
+ return cast(Union[None, UUID, Unset], data)
141
+
142
+ partition = _parse_partition(d.pop("partition", UNSET))
143
+
144
+ offering_software_catalog = cls(
145
+ uuid=uuid,
146
+ created=created,
147
+ modified=modified,
148
+ offering=offering,
149
+ catalog=catalog,
150
+ offering_name=offering_name,
151
+ catalog_name=catalog_name,
152
+ catalog_version=catalog_version,
153
+ partition_name=partition_name,
154
+ enabled_cpu_family=enabled_cpu_family,
155
+ enabled_cpu_microarchitectures=enabled_cpu_microarchitectures,
156
+ partition=partition,
157
+ )
158
+
159
+ offering_software_catalog.additional_properties = d
160
+ return offering_software_catalog
161
+
162
+ @property
163
+ def additional_keys(self) -> list[str]:
164
+ return list(self.additional_properties.keys())
165
+
166
+ def __getitem__(self, key: str) -> Any:
167
+ return self.additional_properties[key]
168
+
169
+ def __setitem__(self, key: str, value: Any) -> None:
170
+ self.additional_properties[key] = value
171
+
172
+ def __delitem__(self, key: str) -> None:
173
+ del self.additional_properties[key]
174
+
175
+ def __contains__(self, key: str) -> bool:
176
+ return key in self.additional_properties
@@ -0,0 +1,118 @@
1
+ from collections.abc import Mapping
2
+ from typing import Any, TypeVar, Union, cast
3
+ from uuid import UUID
4
+
5
+ from attrs import define as _attrs_define
6
+ from attrs import field as _attrs_field
7
+
8
+ from ..types import UNSET, Unset
9
+
10
+ T = TypeVar("T", bound="OfferingSoftwareCatalogRequest")
11
+
12
+
13
+ @_attrs_define
14
+ class OfferingSoftwareCatalogRequest:
15
+ """
16
+ Attributes:
17
+ offering (UUID):
18
+ catalog (UUID):
19
+ enabled_cpu_family (Union[Unset, Any]): List of enabled CPU families: ['x86_64', 'aarch64']
20
+ enabled_cpu_microarchitectures (Union[Unset, Any]): List of enabled CPU microarchitectures: ['generic', 'zen3']
21
+ partition (Union[None, UUID, Unset]):
22
+ """
23
+
24
+ offering: UUID
25
+ catalog: UUID
26
+ enabled_cpu_family: Union[Unset, Any] = UNSET
27
+ enabled_cpu_microarchitectures: Union[Unset, Any] = UNSET
28
+ partition: Union[None, UUID, Unset] = UNSET
29
+ additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict)
30
+
31
+ def to_dict(self) -> dict[str, Any]:
32
+ offering = str(self.offering)
33
+
34
+ catalog = str(self.catalog)
35
+
36
+ enabled_cpu_family = self.enabled_cpu_family
37
+
38
+ enabled_cpu_microarchitectures = self.enabled_cpu_microarchitectures
39
+
40
+ partition: Union[None, Unset, str]
41
+ if isinstance(self.partition, Unset):
42
+ partition = UNSET
43
+ elif isinstance(self.partition, UUID):
44
+ partition = str(self.partition)
45
+ else:
46
+ partition = self.partition
47
+
48
+ field_dict: dict[str, Any] = {}
49
+ field_dict.update(self.additional_properties)
50
+ field_dict.update(
51
+ {
52
+ "offering": offering,
53
+ "catalog": catalog,
54
+ }
55
+ )
56
+ if enabled_cpu_family is not UNSET:
57
+ field_dict["enabled_cpu_family"] = enabled_cpu_family
58
+ if enabled_cpu_microarchitectures is not UNSET:
59
+ field_dict["enabled_cpu_microarchitectures"] = enabled_cpu_microarchitectures
60
+ if partition is not UNSET:
61
+ field_dict["partition"] = partition
62
+
63
+ return field_dict
64
+
65
+ @classmethod
66
+ def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T:
67
+ d = dict(src_dict)
68
+ offering = UUID(d.pop("offering"))
69
+
70
+ catalog = UUID(d.pop("catalog"))
71
+
72
+ enabled_cpu_family = d.pop("enabled_cpu_family", UNSET)
73
+
74
+ enabled_cpu_microarchitectures = d.pop("enabled_cpu_microarchitectures", UNSET)
75
+
76
+ def _parse_partition(data: object) -> Union[None, UUID, Unset]:
77
+ if data is None:
78
+ return data
79
+ if isinstance(data, Unset):
80
+ return data
81
+ try:
82
+ if not isinstance(data, str):
83
+ raise TypeError()
84
+ partition_type_0 = UUID(data)
85
+
86
+ return partition_type_0
87
+ except: # noqa: E722
88
+ pass
89
+ return cast(Union[None, UUID, Unset], data)
90
+
91
+ partition = _parse_partition(d.pop("partition", UNSET))
92
+
93
+ offering_software_catalog_request = cls(
94
+ offering=offering,
95
+ catalog=catalog,
96
+ enabled_cpu_family=enabled_cpu_family,
97
+ enabled_cpu_microarchitectures=enabled_cpu_microarchitectures,
98
+ partition=partition,
99
+ )
100
+
101
+ offering_software_catalog_request.additional_properties = d
102
+ return offering_software_catalog_request
103
+
104
+ @property
105
+ def additional_keys(self) -> list[str]:
106
+ return list(self.additional_properties.keys())
107
+
108
+ def __getitem__(self, key: str) -> Any:
109
+ return self.additional_properties[key]
110
+
111
+ def __setitem__(self, key: str, value: Any) -> None:
112
+ self.additional_properties[key] = value
113
+
114
+ def __delitem__(self, key: str) -> None:
115
+ del self.additional_properties[key]
116
+
117
+ def __contains__(self, key: str) -> bool:
118
+ return key in self.additional_properties