waldur-api-client 7.7.5__py3-none-any.whl → 7.7.6__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 (122) hide show
  1. waldur_api_client/api/marketplace_offering_users/marketplace_offering_users_checklist_retrieve.py +154 -0
  2. waldur_api_client/api/marketplace_offering_users/marketplace_offering_users_checklist_review_retrieve.py +154 -0
  3. waldur_api_client/api/marketplace_offering_users/marketplace_offering_users_completion_review_status_retrieve.py +154 -0
  4. waldur_api_client/api/marketplace_offering_users/marketplace_offering_users_completion_status_retrieve.py +154 -0
  5. waldur_api_client/api/marketplace_offering_users/marketplace_offering_users_submit_answers.py +179 -0
  6. waldur_api_client/api/marketplace_robot_accounts/marketplace_robot_accounts_list.py +23 -0
  7. waldur_api_client/api/marketplace_robot_accounts/marketplace_robot_accounts_retrieve.py +30 -1
  8. waldur_api_client/api/marketplace_service_providers/marketplace_service_providers_project_service_accounts_list.py +276 -0
  9. waldur_api_client/api/marketplace_service_providers/service_provider_compliance_overview.py +189 -0
  10. waldur_api_client/api/marketplace_service_providers/service_provider_offering_users_compliance.py +222 -0
  11. waldur_api_client/api/public_maintenance_announcements/__init__.py +1 -0
  12. waldur_api_client/api/public_maintenance_announcements/public_maintenance_announcements_count.py +325 -0
  13. waldur_api_client/api/public_maintenance_announcements/public_maintenance_announcements_list.py +328 -0
  14. waldur_api_client/api/public_maintenance_announcements/public_maintenance_announcements_retrieve.py +144 -0
  15. waldur_api_client/models/__init__.py +56 -4
  16. waldur_api_client/models/admin_announcement.py +109 -1
  17. waldur_api_client/models/admin_announcement_maintenance_affected_offerings_item.py +103 -0
  18. waldur_api_client/models/admin_announcements_list_field_item.py +8 -0
  19. waldur_api_client/models/admin_announcements_retrieve_field_item.py +8 -0
  20. waldur_api_client/models/azure_sql_server_create_order_attributes.py +80 -0
  21. waldur_api_client/models/azure_virtual_machine_create_order_attributes.py +96 -0
  22. waldur_api_client/models/basic_user.py +30 -21
  23. waldur_api_client/models/booking_offerings_list_field_item.py +1 -0
  24. waldur_api_client/models/booking_offerings_retrieve_field_item.py +1 -0
  25. waldur_api_client/models/create_router.py +1 -1
  26. waldur_api_client/models/create_router_request.py +1 -1
  27. waldur_api_client/models/customer.py +0 -30
  28. waldur_api_client/models/customers_list_field_item.py +0 -2
  29. waldur_api_client/models/customers_retrieve_field_item.py +0 -2
  30. waldur_api_client/models/fingerprint.py +19 -17
  31. waldur_api_client/models/instance_flavor_change_request.py +1 -1
  32. waldur_api_client/models/marketplace_managed_rancher_create_order_attributes.py +144 -0
  33. waldur_api_client/models/marketplace_provider_offerings_list_customer_service_accounts_retrieve_field_item.py +1 -0
  34. waldur_api_client/models/marketplace_provider_offerings_list_field_item.py +1 -0
  35. waldur_api_client/models/marketplace_provider_offerings_list_project_service_accounts_retrieve_field_item.py +1 -0
  36. waldur_api_client/models/marketplace_provider_offerings_retrieve_field_item.py +1 -0
  37. waldur_api_client/models/marketplace_provider_offerings_stats_retrieve_field_item.py +1 -0
  38. waldur_api_client/models/marketplace_provider_offerings_user_has_resource_access_retrieve_field_item.py +1 -0
  39. waldur_api_client/models/marketplace_public_offerings_list_field_item.py +1 -0
  40. waldur_api_client/models/marketplace_public_offerings_retrieve_field_item.py +1 -0
  41. waldur_api_client/models/marketplace_rancher_create_order_attributes.py +142 -0
  42. waldur_api_client/models/marketplace_robot_accounts_list_field_item.py +32 -0
  43. waldur_api_client/models/marketplace_robot_accounts_retrieve_field_item.py +32 -0
  44. waldur_api_client/models/offering.py +9 -0
  45. waldur_api_client/models/offering_create.py +8 -0
  46. waldur_api_client/models/open_stack_backend_instance.py +2 -2
  47. waldur_api_client/models/open_stack_backend_volumes.py +3 -3
  48. waldur_api_client/models/open_stack_backup.py +1 -1
  49. waldur_api_client/models/open_stack_backup_restoration.py +8 -5
  50. waldur_api_client/models/open_stack_backup_restoration_request.py +28 -3
  51. waldur_api_client/models/open_stack_fixed_ip.py +2 -2
  52. waldur_api_client/models/open_stack_fixed_ip_request.py +2 -2
  53. waldur_api_client/models/open_stack_floating_ip.py +5 -4
  54. waldur_api_client/models/open_stack_instance.py +17 -15
  55. waldur_api_client/models/open_stack_instance_allowed_address_pairs_update_request.py +3 -2
  56. waldur_api_client/models/open_stack_instance_availability_zone.py +1 -1
  57. waldur_api_client/models/open_stack_instance_create_order_attributes.py +280 -0
  58. waldur_api_client/models/open_stack_instance_request.py +4 -3
  59. waldur_api_client/models/open_stack_instance_security_groups_update_request.py +1 -1
  60. waldur_api_client/models/open_stack_nested_floating_ip.py +3 -3
  61. waldur_api_client/models/open_stack_nested_instance.py +1 -1
  62. waldur_api_client/models/open_stack_nested_port.py +5 -5
  63. waldur_api_client/models/open_stack_nested_port_request.py +1 -1
  64. waldur_api_client/models/open_stack_nested_security_group.py +1 -53
  65. waldur_api_client/models/open_stack_nested_security_group_request.py +59 -0
  66. waldur_api_client/models/open_stack_nested_sub_net.py +4 -4
  67. waldur_api_client/models/open_stack_nested_sub_net_request.py +4 -4
  68. waldur_api_client/models/open_stack_nested_volume.py +3 -3
  69. waldur_api_client/models/open_stack_nested_volume_request.py +3 -3
  70. waldur_api_client/models/open_stack_network.py +3 -3
  71. waldur_api_client/models/open_stack_port.py +10 -9
  72. waldur_api_client/models/open_stack_port_ip_update_request.py +2 -2
  73. waldur_api_client/models/open_stack_port_request.py +3 -3
  74. waldur_api_client/models/open_stack_router.py +2 -2
  75. waldur_api_client/models/open_stack_router_interface_request.py +4 -2
  76. waldur_api_client/models/open_stack_security_group_rule_create.py +6 -5
  77. waldur_api_client/models/open_stack_security_group_rule_create_request.py +6 -5
  78. waldur_api_client/models/open_stack_security_group_rule_update_request.py +6 -5
  79. waldur_api_client/models/open_stack_server_group.py +2 -1
  80. waldur_api_client/models/open_stack_server_group_request.py +2 -1
  81. waldur_api_client/models/open_stack_snapshot.py +2 -2
  82. waldur_api_client/models/open_stack_snapshot_restoration.py +1 -1
  83. waldur_api_client/models/open_stack_sub_net.py +5 -5
  84. waldur_api_client/models/open_stack_sub_net_request.py +2 -2
  85. waldur_api_client/models/open_stack_tenant.py +3 -3
  86. waldur_api_client/models/open_stack_tenant_create_order_attributes.py +109 -0
  87. waldur_api_client/models/open_stack_volume.py +9 -9
  88. waldur_api_client/models/open_stack_volume_create_order_attributes.py +152 -0
  89. waldur_api_client/models/open_stack_volume_request.py +1 -1
  90. waldur_api_client/models/order_create_request.py +165 -4
  91. waldur_api_client/models/patched_open_stack_instance_request.py +4 -3
  92. waldur_api_client/models/patched_open_stack_server_group_request.py +2 -1
  93. waldur_api_client/models/patched_open_stack_sub_net_request.py +2 -2
  94. waldur_api_client/models/patched_open_stack_volume_request.py +1 -1
  95. waldur_api_client/models/permission_request.py +2 -2
  96. waldur_api_client/models/provider_offering_details.py +9 -0
  97. waldur_api_client/models/public_maintenance_announcement.py +217 -0
  98. waldur_api_client/models/public_maintenance_announcement_state_enum.py +10 -0
  99. waldur_api_client/models/public_maintenance_announcements_count_o_item.py +15 -0
  100. waldur_api_client/models/public_maintenance_announcements_count_state_item.py +12 -0
  101. waldur_api_client/models/public_maintenance_announcements_list_o_item.py +15 -0
  102. waldur_api_client/models/public_maintenance_announcements_list_state_item.py +12 -0
  103. waldur_api_client/models/public_offering_details.py +9 -0
  104. waldur_api_client/models/rancher_cluster_security_group_rule.py +5 -4
  105. waldur_api_client/models/rancher_cluster_security_group_rule_request.py +5 -4
  106. waldur_api_client/models/remote_project_update_request.py +2 -2
  107. waldur_api_client/models/robot_account_details.py +226 -144
  108. waldur_api_client/models/service_provider_compliance_overview.py +122 -0
  109. waldur_api_client/models/service_provider_offering_user_compliance.py +179 -0
  110. waldur_api_client/models/service_provider_offering_user_compliance_state_enum.py +17 -0
  111. waldur_api_client/models/slurm_invoices_slurm_package_create_order_attributes.py +72 -0
  112. waldur_api_client/models/v_mware_virtual_machine_create_order_attributes.py +225 -0
  113. waldur_api_client/models/v_mware_virtual_machine_create_order_attributes_guest_os_type_1.py +155 -0
  114. waldur_api_client/models/v_mware_virtual_machine_create_order_attributes_guest_os_type_2_type_1.py +155 -0
  115. waldur_api_client/models/v_mware_virtual_machine_create_order_attributes_guest_os_type_3_type_1.py +155 -0
  116. waldur_api_client/models/volume_attach_request.py +1 -1
  117. {waldur_api_client-7.7.5.dist-info → waldur_api_client-7.7.6.dist-info}/METADATA +1 -1
  118. {waldur_api_client-7.7.5.dist-info → waldur_api_client-7.7.6.dist-info}/RECORD +120 -85
  119. waldur_api_client/models/nested_security_group_rule.py +0 -222
  120. waldur_api_client/models/nested_security_group_rule_request.py +0 -187
  121. {waldur_api_client-7.7.5.dist-info → waldur_api_client-7.7.6.dist-info}/LICENSE +0 -0
  122. {waldur_api_client-7.7.5.dist-info → waldur_api_client-7.7.6.dist-info}/WHEEL +0 -0
@@ -8,7 +8,20 @@ from ..models.request_types import RequestTypes
8
8
  from ..types import UNSET, Unset
9
9
 
10
10
  if TYPE_CHECKING:
11
+ from ..models.azure_sql_server_create_order_attributes import AzureSQLServerCreateOrderAttributes
12
+ from ..models.azure_virtual_machine_create_order_attributes import AzureVirtualMachineCreateOrderAttributes
13
+ from ..models.marketplace_managed_rancher_create_order_attributes import (
14
+ MarketplaceManagedRancherCreateOrderAttributes,
15
+ )
16
+ from ..models.marketplace_rancher_create_order_attributes import MarketplaceRancherCreateOrderAttributes
17
+ from ..models.open_stack_instance_create_order_attributes import OpenStackInstanceCreateOrderAttributes
18
+ from ..models.open_stack_tenant_create_order_attributes import OpenStackTenantCreateOrderAttributes
19
+ from ..models.open_stack_volume_create_order_attributes import OpenStackVolumeCreateOrderAttributes
11
20
  from ..models.order_create_request_limits import OrderCreateRequestLimits
21
+ from ..models.slurm_invoices_slurm_package_create_order_attributes import (
22
+ SlurmInvoicesSlurmPackageCreateOrderAttributes,
23
+ )
24
+ from ..models.v_mware_virtual_machine_create_order_attributes import VMwareVirtualMachineCreateOrderAttributes
12
25
 
13
26
 
14
27
  T = TypeVar("T", bound="OrderCreateRequest")
@@ -21,7 +34,12 @@ class OrderCreateRequest:
21
34
  offering (str):
22
35
  project (str):
23
36
  plan (Union[Unset, str]):
24
- attributes (Union[Unset, Any]):
37
+ attributes (Union['AzureSQLServerCreateOrderAttributes', 'AzureVirtualMachineCreateOrderAttributes',
38
+ 'MarketplaceManagedRancherCreateOrderAttributes', 'MarketplaceRancherCreateOrderAttributes',
39
+ 'OpenStackInstanceCreateOrderAttributes', 'OpenStackTenantCreateOrderAttributes',
40
+ 'OpenStackVolumeCreateOrderAttributes', 'SlurmInvoicesSlurmPackageCreateOrderAttributes',
41
+ 'VMwareVirtualMachineCreateOrderAttributes', Unset]): Attributes structure depends on the offering type
42
+ specified in the parent object
25
43
  limits (Union[Unset, OrderCreateRequestLimits]):
26
44
  type_ (Union[Unset, RequestTypes]): Default: RequestTypes.CREATE.
27
45
  accepting_terms_of_service (Union[Unset, bool]):
@@ -31,7 +49,18 @@ class OrderCreateRequest:
31
49
  offering: str
32
50
  project: str
33
51
  plan: Union[Unset, str] = UNSET
34
- attributes: Union[Unset, Any] = UNSET
52
+ attributes: Union[
53
+ "AzureSQLServerCreateOrderAttributes",
54
+ "AzureVirtualMachineCreateOrderAttributes",
55
+ "MarketplaceManagedRancherCreateOrderAttributes",
56
+ "MarketplaceRancherCreateOrderAttributes",
57
+ "OpenStackInstanceCreateOrderAttributes",
58
+ "OpenStackTenantCreateOrderAttributes",
59
+ "OpenStackVolumeCreateOrderAttributes",
60
+ "SlurmInvoicesSlurmPackageCreateOrderAttributes",
61
+ "VMwareVirtualMachineCreateOrderAttributes",
62
+ Unset,
63
+ ] = UNSET
35
64
  limits: Union[Unset, "OrderCreateRequestLimits"] = UNSET
36
65
  type_: Union[Unset, RequestTypes] = RequestTypes.CREATE
37
66
  accepting_terms_of_service: Union[Unset, bool] = UNSET
@@ -39,13 +68,46 @@ class OrderCreateRequest:
39
68
  additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict)
40
69
 
41
70
  def to_dict(self) -> dict[str, Any]:
71
+ from ..models.azure_sql_server_create_order_attributes import AzureSQLServerCreateOrderAttributes
72
+ from ..models.azure_virtual_machine_create_order_attributes import AzureVirtualMachineCreateOrderAttributes
73
+ from ..models.marketplace_managed_rancher_create_order_attributes import (
74
+ MarketplaceManagedRancherCreateOrderAttributes,
75
+ )
76
+ from ..models.marketplace_rancher_create_order_attributes import MarketplaceRancherCreateOrderAttributes
77
+ from ..models.open_stack_instance_create_order_attributes import OpenStackInstanceCreateOrderAttributes
78
+ from ..models.open_stack_tenant_create_order_attributes import OpenStackTenantCreateOrderAttributes
79
+ from ..models.open_stack_volume_create_order_attributes import OpenStackVolumeCreateOrderAttributes
80
+ from ..models.slurm_invoices_slurm_package_create_order_attributes import (
81
+ SlurmInvoicesSlurmPackageCreateOrderAttributes,
82
+ )
83
+
42
84
  offering = self.offering
43
85
 
44
86
  project = self.project
45
87
 
46
88
  plan = self.plan
47
89
 
48
- attributes = self.attributes
90
+ attributes: Union[Unset, dict[str, Any]]
91
+ if isinstance(self.attributes, Unset):
92
+ attributes = UNSET
93
+ elif isinstance(self.attributes, AzureVirtualMachineCreateOrderAttributes):
94
+ attributes = self.attributes.to_dict()
95
+ elif isinstance(self.attributes, AzureSQLServerCreateOrderAttributes):
96
+ attributes = self.attributes.to_dict()
97
+ elif isinstance(self.attributes, OpenStackTenantCreateOrderAttributes):
98
+ attributes = self.attributes.to_dict()
99
+ elif isinstance(self.attributes, OpenStackInstanceCreateOrderAttributes):
100
+ attributes = self.attributes.to_dict()
101
+ elif isinstance(self.attributes, OpenStackVolumeCreateOrderAttributes):
102
+ attributes = self.attributes.to_dict()
103
+ elif isinstance(self.attributes, MarketplaceRancherCreateOrderAttributes):
104
+ attributes = self.attributes.to_dict()
105
+ elif isinstance(self.attributes, MarketplaceManagedRancherCreateOrderAttributes):
106
+ attributes = self.attributes.to_dict()
107
+ elif isinstance(self.attributes, SlurmInvoicesSlurmPackageCreateOrderAttributes):
108
+ attributes = self.attributes.to_dict()
109
+ else:
110
+ attributes = self.attributes.to_dict()
49
111
 
50
112
  limits: Union[Unset, dict[str, Any]] = UNSET
51
113
  if not isinstance(self.limits, Unset):
@@ -88,7 +150,20 @@ class OrderCreateRequest:
88
150
 
89
151
  @classmethod
90
152
  def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T:
153
+ from ..models.azure_sql_server_create_order_attributes import AzureSQLServerCreateOrderAttributes
154
+ from ..models.azure_virtual_machine_create_order_attributes import AzureVirtualMachineCreateOrderAttributes
155
+ from ..models.marketplace_managed_rancher_create_order_attributes import (
156
+ MarketplaceManagedRancherCreateOrderAttributes,
157
+ )
158
+ from ..models.marketplace_rancher_create_order_attributes import MarketplaceRancherCreateOrderAttributes
159
+ from ..models.open_stack_instance_create_order_attributes import OpenStackInstanceCreateOrderAttributes
160
+ from ..models.open_stack_tenant_create_order_attributes import OpenStackTenantCreateOrderAttributes
161
+ from ..models.open_stack_volume_create_order_attributes import OpenStackVolumeCreateOrderAttributes
91
162
  from ..models.order_create_request_limits import OrderCreateRequestLimits
163
+ from ..models.slurm_invoices_slurm_package_create_order_attributes import (
164
+ SlurmInvoicesSlurmPackageCreateOrderAttributes,
165
+ )
166
+ from ..models.v_mware_virtual_machine_create_order_attributes import VMwareVirtualMachineCreateOrderAttributes
92
167
 
93
168
  d = dict(src_dict)
94
169
  offering = d.pop("offering")
@@ -97,7 +172,93 @@ class OrderCreateRequest:
97
172
 
98
173
  plan = d.pop("plan", UNSET)
99
174
 
100
- attributes = d.pop("attributes", UNSET)
175
+ def _parse_attributes(
176
+ data: object,
177
+ ) -> Union[
178
+ "AzureSQLServerCreateOrderAttributes",
179
+ "AzureVirtualMachineCreateOrderAttributes",
180
+ "MarketplaceManagedRancherCreateOrderAttributes",
181
+ "MarketplaceRancherCreateOrderAttributes",
182
+ "OpenStackInstanceCreateOrderAttributes",
183
+ "OpenStackTenantCreateOrderAttributes",
184
+ "OpenStackVolumeCreateOrderAttributes",
185
+ "SlurmInvoicesSlurmPackageCreateOrderAttributes",
186
+ "VMwareVirtualMachineCreateOrderAttributes",
187
+ Unset,
188
+ ]:
189
+ if isinstance(data, Unset):
190
+ return data
191
+ try:
192
+ if not isinstance(data, dict):
193
+ raise TypeError()
194
+ attributes_type_0 = AzureVirtualMachineCreateOrderAttributes.from_dict(data)
195
+
196
+ return attributes_type_0
197
+ except: # noqa: E722
198
+ pass
199
+ try:
200
+ if not isinstance(data, dict):
201
+ raise TypeError()
202
+ attributes_type_1 = AzureSQLServerCreateOrderAttributes.from_dict(data)
203
+
204
+ return attributes_type_1
205
+ except: # noqa: E722
206
+ pass
207
+ try:
208
+ if not isinstance(data, dict):
209
+ raise TypeError()
210
+ attributes_type_2 = OpenStackTenantCreateOrderAttributes.from_dict(data)
211
+
212
+ return attributes_type_2
213
+ except: # noqa: E722
214
+ pass
215
+ try:
216
+ if not isinstance(data, dict):
217
+ raise TypeError()
218
+ attributes_type_3 = OpenStackInstanceCreateOrderAttributes.from_dict(data)
219
+
220
+ return attributes_type_3
221
+ except: # noqa: E722
222
+ pass
223
+ try:
224
+ if not isinstance(data, dict):
225
+ raise TypeError()
226
+ attributes_type_4 = OpenStackVolumeCreateOrderAttributes.from_dict(data)
227
+
228
+ return attributes_type_4
229
+ except: # noqa: E722
230
+ pass
231
+ try:
232
+ if not isinstance(data, dict):
233
+ raise TypeError()
234
+ attributes_type_5 = MarketplaceRancherCreateOrderAttributes.from_dict(data)
235
+
236
+ return attributes_type_5
237
+ except: # noqa: E722
238
+ pass
239
+ try:
240
+ if not isinstance(data, dict):
241
+ raise TypeError()
242
+ attributes_type_6 = MarketplaceManagedRancherCreateOrderAttributes.from_dict(data)
243
+
244
+ return attributes_type_6
245
+ except: # noqa: E722
246
+ pass
247
+ try:
248
+ if not isinstance(data, dict):
249
+ raise TypeError()
250
+ attributes_type_7 = SlurmInvoicesSlurmPackageCreateOrderAttributes.from_dict(data)
251
+
252
+ return attributes_type_7
253
+ except: # noqa: E722
254
+ pass
255
+ if not isinstance(data, dict):
256
+ raise TypeError()
257
+ attributes_type_8 = VMwareVirtualMachineCreateOrderAttributes.from_dict(data)
258
+
259
+ return attributes_type_8
260
+
261
+ attributes = _parse_attributes(d.pop("attributes", UNSET))
101
262
 
102
263
  _limits = d.pop("limits", UNSET)
103
264
  limits: Union[Unset, OrderCreateRequestLimits]
@@ -19,9 +19,10 @@ class PatchedOpenStackInstanceRequest:
19
19
  Attributes:
20
20
  name (Union[Unset, str]):
21
21
  description (Union[Unset, str]):
22
- system_volume_type (Union[None, Unset, str]):
23
- data_volume_type (Union[None, Unset, str]):
24
- data_volumes (Union[Unset, list['OpenStackDataVolumeRequest']]):
22
+ system_volume_type (Union[None, Unset, str]): Volume type for the system volume
23
+ data_volume_type (Union[None, Unset, str]): Volume type for the data volume
24
+ data_volumes (Union[Unset, list['OpenStackDataVolumeRequest']]): Additional data volumes to attach to the
25
+ instance
25
26
  """
26
27
 
27
28
  name: Union[Unset, str] = UNSET
@@ -17,7 +17,8 @@ class PatchedOpenStackServerGroupRequest:
17
17
  Attributes:
18
18
  name (Union[Unset, str]):
19
19
  description (Union[Unset, str]):
20
- policy (Union[BlankEnum, PolicyEnum, Unset]):
20
+ policy (Union[BlankEnum, PolicyEnum, Unset]): Server group policy determining the rules for scheduling servers
21
+ in this group
21
22
  """
22
23
 
23
24
  name: Union[Unset, str] = UNSET
@@ -21,8 +21,8 @@ class PatchedOpenStackSubNetRequest:
21
21
  name (Union[Unset, str]):
22
22
  description (Union[Unset, str]):
23
23
  cidr (Union[Unset, str]):
24
- gateway_ip (Union[None, Unset, str]):
25
- disable_gateway (Union[Unset, bool]):
24
+ gateway_ip (Union[None, Unset, str]): IP address of the gateway for this subnet
25
+ disable_gateway (Union[Unset, bool]): If True, no gateway IP address will be allocated
26
26
  allocation_pools (Union[Unset, list['OpenStackSubNetAllocationPoolRequest']]):
27
27
  dns_nameservers (Union[Unset, list[str]]):
28
28
  host_routes (Union[Unset, list['OpenStackStaticRouteRequest']]):
@@ -15,7 +15,7 @@ class PatchedOpenStackVolumeRequest:
15
15
  Attributes:
16
16
  name (Union[Unset, str]):
17
17
  description (Union[Unset, str]):
18
- bootable (Union[Unset, bool]):
18
+ bootable (Union[Unset, bool]): Indicates if this volume can be used to boot an instance
19
19
  """
20
20
 
21
21
  name: Union[Unset, str] = UNSET
@@ -25,14 +25,14 @@ class PermissionRequest:
25
25
  created_by_username (str):
26
26
  reviewed_by_full_name (str):
27
27
  reviewed_by_username (str):
28
- reviewed_at (Union[None, datetime.datetime]):
28
+ reviewed_at (Union[None, datetime.datetime]): Timestamp when the review was completed
29
29
  scope_uuid (UUID):
30
30
  scope_name (str):
31
31
  customer_uuid (UUID):
32
32
  customer_name (str):
33
33
  role_name (str):
34
34
  role_description (str):
35
- review_comment (Union[None, Unset, str]):
35
+ review_comment (Union[None, Unset, str]): Optional comment provided during review
36
36
  """
37
37
 
38
38
  url: str
@@ -100,6 +100,7 @@ class ProviderOfferingDetails:
100
100
  parent_uuid (Union[None, UUID, Unset]):
101
101
  parent_name (Union[None, Unset, str]):
102
102
  backend_metadata (Union[Unset, Any]):
103
+ has_compliance_requirements (Union[Unset, bool]):
103
104
  integration_status (Union[None, Unset, list['IntegrationStatus']]):
104
105
  google_calendar_is_public (Union[None, Unset, bool]):
105
106
  google_calendar_link (Union[None, Unset, str]): Get the Google Calendar link for an offering.
@@ -168,6 +169,7 @@ class ProviderOfferingDetails:
168
169
  parent_uuid: Union[None, UUID, Unset] = UNSET
169
170
  parent_name: Union[None, Unset, str] = UNSET
170
171
  backend_metadata: Union[Unset, Any] = UNSET
172
+ has_compliance_requirements: Union[Unset, bool] = UNSET
171
173
  integration_status: Union[None, Unset, list["IntegrationStatus"]] = UNSET
172
174
  google_calendar_is_public: Union[None, Unset, bool] = UNSET
173
175
  google_calendar_link: Union[None, Unset, str] = UNSET
@@ -458,6 +460,8 @@ class ProviderOfferingDetails:
458
460
 
459
461
  backend_metadata = self.backend_metadata
460
462
 
463
+ has_compliance_requirements = self.has_compliance_requirements
464
+
461
465
  integration_status: Union[None, Unset, list[dict[str, Any]]]
462
466
  if isinstance(self.integration_status, Unset):
463
467
  integration_status = UNSET
@@ -611,6 +615,8 @@ class ProviderOfferingDetails:
611
615
  field_dict["parent_name"] = parent_name
612
616
  if backend_metadata is not UNSET:
613
617
  field_dict["backend_metadata"] = backend_metadata
618
+ if has_compliance_requirements is not UNSET:
619
+ field_dict["has_compliance_requirements"] = has_compliance_requirements
614
620
  if integration_status is not UNSET:
615
621
  field_dict["integration_status"] = integration_status
616
622
  if google_calendar_is_public is not UNSET:
@@ -1059,6 +1065,8 @@ class ProviderOfferingDetails:
1059
1065
 
1060
1066
  backend_metadata = d.pop("backend_metadata", UNSET)
1061
1067
 
1068
+ has_compliance_requirements = d.pop("has_compliance_requirements", UNSET)
1069
+
1062
1070
  def _parse_integration_status(data: object) -> Union[None, Unset, list["IntegrationStatus"]]:
1063
1071
  if data is None:
1064
1072
  return data
@@ -1163,6 +1171,7 @@ class ProviderOfferingDetails:
1163
1171
  parent_uuid=parent_uuid,
1164
1172
  parent_name=parent_name,
1165
1173
  backend_metadata=backend_metadata,
1174
+ has_compliance_requirements=has_compliance_requirements,
1166
1175
  integration_status=integration_status,
1167
1176
  google_calendar_is_public=google_calendar_is_public,
1168
1177
  google_calendar_link=google_calendar_link,
@@ -0,0 +1,217 @@
1
+ import datetime
2
+ from collections.abc import Mapping
3
+ from typing import TYPE_CHECKING, 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 ..models.maintenance_type_enum import MaintenanceTypeEnum
11
+ from ..models.public_maintenance_announcement_state_enum import PublicMaintenanceAnnouncementStateEnum
12
+
13
+ if TYPE_CHECKING:
14
+ from ..models.maintenance_announcement_offering import MaintenanceAnnouncementOffering
15
+
16
+
17
+ T = TypeVar("T", bound="PublicMaintenanceAnnouncement")
18
+
19
+
20
+ @_attrs_define
21
+ class PublicMaintenanceAnnouncement:
22
+ """
23
+ Attributes:
24
+ url (str):
25
+ uuid (UUID):
26
+ name (str):
27
+ message (str):
28
+ maintenance_type (MaintenanceTypeEnum):
29
+ maintenance_type_display (str):
30
+ external_reference_url (str): Optional reference to an external maintenance tracker
31
+ state (PublicMaintenanceAnnouncementStateEnum):
32
+ scheduled_start (datetime.datetime): When the maintenance is scheduled to begin
33
+ scheduled_end (datetime.datetime): When the maintenance is scheduled to complete
34
+ actual_start (Union[None, datetime.datetime]): When the maintenance actually began
35
+ actual_end (Union[None, datetime.datetime]): When the maintenance actually completed
36
+ affected_offerings (list['MaintenanceAnnouncementOffering']):
37
+ service_provider_name (str):
38
+ """
39
+
40
+ url: str
41
+ uuid: UUID
42
+ name: str
43
+ message: str
44
+ maintenance_type: MaintenanceTypeEnum
45
+ maintenance_type_display: str
46
+ external_reference_url: str
47
+ state: PublicMaintenanceAnnouncementStateEnum
48
+ scheduled_start: datetime.datetime
49
+ scheduled_end: datetime.datetime
50
+ actual_start: Union[None, datetime.datetime]
51
+ actual_end: Union[None, datetime.datetime]
52
+ affected_offerings: list["MaintenanceAnnouncementOffering"]
53
+ service_provider_name: str
54
+ additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict)
55
+
56
+ def to_dict(self) -> dict[str, Any]:
57
+ url = self.url
58
+
59
+ uuid = str(self.uuid)
60
+
61
+ name = self.name
62
+
63
+ message = self.message
64
+
65
+ maintenance_type = self.maintenance_type.value
66
+
67
+ maintenance_type_display = self.maintenance_type_display
68
+
69
+ external_reference_url = self.external_reference_url
70
+
71
+ state = self.state.value
72
+
73
+ scheduled_start = self.scheduled_start.isoformat()
74
+
75
+ scheduled_end = self.scheduled_end.isoformat()
76
+
77
+ actual_start: Union[None, str]
78
+ if isinstance(self.actual_start, datetime.datetime):
79
+ actual_start = self.actual_start.isoformat()
80
+ else:
81
+ actual_start = self.actual_start
82
+
83
+ actual_end: Union[None, str]
84
+ if isinstance(self.actual_end, datetime.datetime):
85
+ actual_end = self.actual_end.isoformat()
86
+ else:
87
+ actual_end = self.actual_end
88
+
89
+ affected_offerings = []
90
+ for affected_offerings_item_data in self.affected_offerings:
91
+ affected_offerings_item = affected_offerings_item_data.to_dict()
92
+ affected_offerings.append(affected_offerings_item)
93
+
94
+ service_provider_name = self.service_provider_name
95
+
96
+ field_dict: dict[str, Any] = {}
97
+ field_dict.update(self.additional_properties)
98
+ field_dict.update(
99
+ {
100
+ "url": url,
101
+ "uuid": uuid,
102
+ "name": name,
103
+ "message": message,
104
+ "maintenance_type": maintenance_type,
105
+ "maintenance_type_display": maintenance_type_display,
106
+ "external_reference_url": external_reference_url,
107
+ "state": state,
108
+ "scheduled_start": scheduled_start,
109
+ "scheduled_end": scheduled_end,
110
+ "actual_start": actual_start,
111
+ "actual_end": actual_end,
112
+ "affected_offerings": affected_offerings,
113
+ "service_provider_name": service_provider_name,
114
+ }
115
+ )
116
+
117
+ return field_dict
118
+
119
+ @classmethod
120
+ def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T:
121
+ from ..models.maintenance_announcement_offering import MaintenanceAnnouncementOffering
122
+
123
+ d = dict(src_dict)
124
+ url = d.pop("url")
125
+
126
+ uuid = UUID(d.pop("uuid"))
127
+
128
+ name = d.pop("name")
129
+
130
+ message = d.pop("message")
131
+
132
+ maintenance_type = MaintenanceTypeEnum(d.pop("maintenance_type"))
133
+
134
+ maintenance_type_display = d.pop("maintenance_type_display")
135
+
136
+ external_reference_url = d.pop("external_reference_url")
137
+
138
+ state = PublicMaintenanceAnnouncementStateEnum(d.pop("state"))
139
+
140
+ scheduled_start = isoparse(d.pop("scheduled_start"))
141
+
142
+ scheduled_end = isoparse(d.pop("scheduled_end"))
143
+
144
+ def _parse_actual_start(data: object) -> Union[None, datetime.datetime]:
145
+ if data is None:
146
+ return data
147
+ try:
148
+ if not isinstance(data, str):
149
+ raise TypeError()
150
+ actual_start_type_0 = isoparse(data)
151
+
152
+ return actual_start_type_0
153
+ except: # noqa: E722
154
+ pass
155
+ return cast(Union[None, datetime.datetime], data)
156
+
157
+ actual_start = _parse_actual_start(d.pop("actual_start"))
158
+
159
+ def _parse_actual_end(data: object) -> Union[None, datetime.datetime]:
160
+ if data is None:
161
+ return data
162
+ try:
163
+ if not isinstance(data, str):
164
+ raise TypeError()
165
+ actual_end_type_0 = isoparse(data)
166
+
167
+ return actual_end_type_0
168
+ except: # noqa: E722
169
+ pass
170
+ return cast(Union[None, datetime.datetime], data)
171
+
172
+ actual_end = _parse_actual_end(d.pop("actual_end"))
173
+
174
+ affected_offerings = []
175
+ _affected_offerings = d.pop("affected_offerings")
176
+ for affected_offerings_item_data in _affected_offerings:
177
+ affected_offerings_item = MaintenanceAnnouncementOffering.from_dict(affected_offerings_item_data)
178
+
179
+ affected_offerings.append(affected_offerings_item)
180
+
181
+ service_provider_name = d.pop("service_provider_name")
182
+
183
+ public_maintenance_announcement = cls(
184
+ url=url,
185
+ uuid=uuid,
186
+ name=name,
187
+ message=message,
188
+ maintenance_type=maintenance_type,
189
+ maintenance_type_display=maintenance_type_display,
190
+ external_reference_url=external_reference_url,
191
+ state=state,
192
+ scheduled_start=scheduled_start,
193
+ scheduled_end=scheduled_end,
194
+ actual_start=actual_start,
195
+ actual_end=actual_end,
196
+ affected_offerings=affected_offerings,
197
+ service_provider_name=service_provider_name,
198
+ )
199
+
200
+ public_maintenance_announcement.additional_properties = d
201
+ return public_maintenance_announcement
202
+
203
+ @property
204
+ def additional_keys(self) -> list[str]:
205
+ return list(self.additional_properties.keys())
206
+
207
+ def __getitem__(self, key: str) -> Any:
208
+ return self.additional_properties[key]
209
+
210
+ def __setitem__(self, key: str, value: Any) -> None:
211
+ self.additional_properties[key] = value
212
+
213
+ def __delitem__(self, key: str) -> None:
214
+ del self.additional_properties[key]
215
+
216
+ def __contains__(self, key: str) -> bool:
217
+ return key in self.additional_properties
@@ -0,0 +1,10 @@
1
+ from enum import Enum
2
+
3
+
4
+ class PublicMaintenanceAnnouncementStateEnum(str, Enum):
5
+ COMPLETED = "Completed"
6
+ IN_PROGRESS = "In progress"
7
+ SCHEDULED = "Scheduled"
8
+
9
+ def __str__(self) -> str:
10
+ return str(self.value)
@@ -0,0 +1,15 @@
1
+ from enum import Enum
2
+
3
+
4
+ class PublicMaintenanceAnnouncementsCountOItem(str, Enum):
5
+ CREATED = "created"
6
+ NAME = "name"
7
+ SCHEDULED_END = "scheduled_end"
8
+ SCHEDULED_START = "scheduled_start"
9
+ VALUE_0 = "-created"
10
+ VALUE_1 = "-name"
11
+ VALUE_2 = "-scheduled_end"
12
+ VALUE_3 = "-scheduled_start"
13
+
14
+ def __str__(self) -> str:
15
+ return str(self.value)
@@ -0,0 +1,12 @@
1
+ from enum import Enum
2
+
3
+
4
+ class PublicMaintenanceAnnouncementsCountStateItem(str, Enum):
5
+ CANCELLED = "Cancelled"
6
+ COMPLETED = "Completed"
7
+ DRAFT = "Draft"
8
+ IN_PROGRESS = "In progress"
9
+ SCHEDULED = "Scheduled"
10
+
11
+ def __str__(self) -> str:
12
+ return str(self.value)
@@ -0,0 +1,15 @@
1
+ from enum import Enum
2
+
3
+
4
+ class PublicMaintenanceAnnouncementsListOItem(str, Enum):
5
+ CREATED = "created"
6
+ NAME = "name"
7
+ SCHEDULED_END = "scheduled_end"
8
+ SCHEDULED_START = "scheduled_start"
9
+ VALUE_0 = "-created"
10
+ VALUE_1 = "-name"
11
+ VALUE_2 = "-scheduled_end"
12
+ VALUE_3 = "-scheduled_start"
13
+
14
+ def __str__(self) -> str:
15
+ return str(self.value)
@@ -0,0 +1,12 @@
1
+ from enum import Enum
2
+
3
+
4
+ class PublicMaintenanceAnnouncementsListStateItem(str, Enum):
5
+ CANCELLED = "Cancelled"
6
+ COMPLETED = "Completed"
7
+ DRAFT = "Draft"
8
+ IN_PROGRESS = "In progress"
9
+ SCHEDULED = "Scheduled"
10
+
11
+ def __str__(self) -> str:
12
+ return str(self.value)
@@ -96,6 +96,7 @@ class PublicOfferingDetails:
96
96
  parent_uuid (Union[None, UUID, Unset]):
97
97
  parent_name (Union[None, Unset, str]):
98
98
  backend_metadata (Union[Unset, Any]):
99
+ has_compliance_requirements (Union[Unset, bool]):
99
100
  google_calendar_is_public (Union[None, Unset, bool]):
100
101
  google_calendar_link (Union[None, Unset, str]): Get the Google Calendar link for an offering.
101
102
  promotion_campaigns (Union[Unset, list['NestedCampaign']]):
@@ -162,6 +163,7 @@ class PublicOfferingDetails:
162
163
  parent_uuid: Union[None, UUID, Unset] = UNSET
163
164
  parent_name: Union[None, Unset, str] = UNSET
164
165
  backend_metadata: Union[Unset, Any] = UNSET
166
+ has_compliance_requirements: Union[Unset, bool] = UNSET
165
167
  google_calendar_is_public: Union[None, Unset, bool] = UNSET
166
168
  google_calendar_link: Union[None, Unset, str] = UNSET
167
169
  promotion_campaigns: Union[Unset, list["NestedCampaign"]] = UNSET
@@ -444,6 +446,8 @@ class PublicOfferingDetails:
444
446
 
445
447
  backend_metadata = self.backend_metadata
446
448
 
449
+ has_compliance_requirements = self.has_compliance_requirements
450
+
447
451
  google_calendar_is_public: Union[None, Unset, bool]
448
452
  if isinstance(self.google_calendar_is_public, Unset):
449
453
  google_calendar_is_public = UNSET
@@ -588,6 +592,8 @@ class PublicOfferingDetails:
588
592
  field_dict["parent_name"] = parent_name
589
593
  if backend_metadata is not UNSET:
590
594
  field_dict["backend_metadata"] = backend_metadata
595
+ if has_compliance_requirements is not UNSET:
596
+ field_dict["has_compliance_requirements"] = has_compliance_requirements
591
597
  if google_calendar_is_public is not UNSET:
592
598
  field_dict["google_calendar_is_public"] = google_calendar_is_public
593
599
  if google_calendar_link is not UNSET:
@@ -1020,6 +1026,8 @@ class PublicOfferingDetails:
1020
1026
 
1021
1027
  backend_metadata = d.pop("backend_metadata", UNSET)
1022
1028
 
1029
+ has_compliance_requirements = d.pop("has_compliance_requirements", UNSET)
1030
+
1023
1031
  def _parse_google_calendar_is_public(data: object) -> Union[None, Unset, bool]:
1024
1032
  if data is None:
1025
1033
  return data
@@ -1107,6 +1115,7 @@ class PublicOfferingDetails:
1107
1115
  parent_uuid=parent_uuid,
1108
1116
  parent_name=parent_name,
1109
1117
  backend_metadata=backend_metadata,
1118
+ has_compliance_requirements=has_compliance_requirements,
1110
1119
  google_calendar_is_public=google_calendar_is_public,
1111
1120
  google_calendar_link=google_calendar_link,
1112
1121
  promotion_campaigns=promotion_campaigns,