waldur-api-client 7.6.8__py3-none-any.whl → 7.6.9__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 (58) hide show
  1. waldur_api_client/api/invoices/invoices_list.py +0 -30
  2. waldur_api_client/api/invoices/invoices_stats_list.py +0 -30
  3. waldur_api_client/api/marketplace_maintenance_announcement_offerings/__init__.py +1 -0
  4. waldur_api_client/api/marketplace_maintenance_announcement_offerings/marketplace_maintenance_announcement_offerings_create.py +152 -0
  5. waldur_api_client/api/marketplace_maintenance_announcement_offerings/marketplace_maintenance_announcement_offerings_destroy.py +89 -0
  6. waldur_api_client/api/marketplace_maintenance_announcement_offerings/marketplace_maintenance_announcement_offerings_list.py +175 -0
  7. waldur_api_client/api/marketplace_maintenance_announcement_offerings/marketplace_maintenance_announcement_offerings_partial_update.py +166 -0
  8. waldur_api_client/api/marketplace_maintenance_announcement_offerings/marketplace_maintenance_announcement_offerings_retrieve.py +144 -0
  9. waldur_api_client/api/marketplace_maintenance_announcement_offerings/marketplace_maintenance_announcement_offerings_update.py +166 -0
  10. waldur_api_client/api/marketplace_maintenance_announcement_template_offerings/__init__.py +1 -0
  11. waldur_api_client/api/marketplace_maintenance_announcement_template_offerings/marketplace_maintenance_announcement_template_offerings_create.py +152 -0
  12. waldur_api_client/api/marketplace_maintenance_announcement_template_offerings/marketplace_maintenance_announcement_template_offerings_destroy.py +89 -0
  13. waldur_api_client/api/marketplace_maintenance_announcement_template_offerings/marketplace_maintenance_announcement_template_offerings_list.py +175 -0
  14. waldur_api_client/api/marketplace_maintenance_announcement_template_offerings/marketplace_maintenance_announcement_template_offerings_partial_update.py +168 -0
  15. waldur_api_client/api/marketplace_maintenance_announcement_template_offerings/marketplace_maintenance_announcement_template_offerings_retrieve.py +144 -0
  16. waldur_api_client/api/marketplace_maintenance_announcement_template_offerings/marketplace_maintenance_announcement_template_offerings_update.py +166 -0
  17. waldur_api_client/api/marketplace_maintenance_announcements/__init__.py +1 -0
  18. waldur_api_client/api/marketplace_maintenance_announcements/marketplace_maintenance_announcements_create.py +150 -0
  19. waldur_api_client/api/marketplace_maintenance_announcements/marketplace_maintenance_announcements_destroy.py +89 -0
  20. waldur_api_client/api/marketplace_maintenance_announcements/marketplace_maintenance_announcements_list.py +175 -0
  21. waldur_api_client/api/marketplace_maintenance_announcements/marketplace_maintenance_announcements_partial_update.py +164 -0
  22. waldur_api_client/api/marketplace_maintenance_announcements/marketplace_maintenance_announcements_retrieve.py +142 -0
  23. waldur_api_client/api/marketplace_maintenance_announcements/marketplace_maintenance_announcements_update.py +164 -0
  24. waldur_api_client/api/marketplace_maintenance_announcements_template/__init__.py +1 -0
  25. waldur_api_client/api/marketplace_maintenance_announcements_template/marketplace_maintenance_announcements_template_create.py +152 -0
  26. waldur_api_client/api/marketplace_maintenance_announcements_template/marketplace_maintenance_announcements_template_destroy.py +89 -0
  27. waldur_api_client/api/marketplace_maintenance_announcements_template/marketplace_maintenance_announcements_template_list.py +175 -0
  28. waldur_api_client/api/marketplace_maintenance_announcements_template/marketplace_maintenance_announcements_template_partial_update.py +166 -0
  29. waldur_api_client/api/marketplace_maintenance_announcements_template/marketplace_maintenance_announcements_template_retrieve.py +144 -0
  30. waldur_api_client/api/marketplace_maintenance_announcements_template/marketplace_maintenance_announcements_template_update.py +166 -0
  31. waldur_api_client/api/marketplace_provider_offerings/marketplace_provider_offerings_update_offering_component.py +6 -6
  32. waldur_api_client/api/openstack_volume_types/openstack_volume_types_names_retrieve.py +118 -0
  33. waldur_api_client/models/__init__.py +34 -0
  34. waldur_api_client/models/constance_settings.py +22 -0
  35. waldur_api_client/models/constance_settings_request.py +22 -0
  36. waldur_api_client/models/impact_level_enum.py +11 -0
  37. waldur_api_client/models/maintenance_announcement.py +225 -0
  38. waldur_api_client/models/maintenance_announcement_offering.py +112 -0
  39. waldur_api_client/models/maintenance_announcement_offering_request.py +95 -0
  40. waldur_api_client/models/maintenance_announcement_offering_template.py +112 -0
  41. waldur_api_client/models/maintenance_announcement_offering_template_request.py +95 -0
  42. waldur_api_client/models/maintenance_announcement_request.py +113 -0
  43. waldur_api_client/models/maintenance_announcement_state_enum.py +12 -0
  44. waldur_api_client/models/maintenance_announcement_template.py +134 -0
  45. waldur_api_client/models/maintenance_announcement_template_request.py +95 -0
  46. waldur_api_client/models/maintenance_type_enum.py +12 -0
  47. waldur_api_client/models/merged_plugin_options.py +1 -1
  48. waldur_api_client/models/merged_plugin_options_request.py +1 -1
  49. waldur_api_client/models/offering_component.py +15 -4
  50. waldur_api_client/models/patched_maintenance_announcement_offering_request.py +94 -0
  51. waldur_api_client/models/patched_maintenance_announcement_offering_template_request.py +94 -0
  52. waldur_api_client/models/patched_maintenance_announcement_request.py +128 -0
  53. waldur_api_client/models/patched_maintenance_announcement_template_request.py +94 -0
  54. waldur_api_client/models/update_offering_component_request.py +274 -0
  55. {waldur_api_client-7.6.8.dist-info → waldur_api_client-7.6.9.dist-info}/METADATA +1 -1
  56. {waldur_api_client-7.6.8.dist-info → waldur_api_client-7.6.9.dist-info}/RECORD +58 -13
  57. {waldur_api_client-7.6.8.dist-info → waldur_api_client-7.6.9.dist-info}/LICENSE +0 -0
  58. {waldur_api_client-7.6.8.dist-info → waldur_api_client-7.6.9.dist-info}/WHEEL +0 -0
@@ -309,6 +309,7 @@ from .identity_provider_request import IdentityProviderRequest
309
309
  from .image_create_request import ImageCreateRequest
310
310
  from .image_create_response import ImageCreateResponse
311
311
  from .image_upload_response import ImageUploadResponse
312
+ from .impact_level_enum import ImpactLevelEnum
312
313
  from .import_resource_request import ImportResourceRequest
313
314
  from .importable_resource import ImportableResource
314
315
  from .instance_flavor_change_request import InstanceFlavorChangeRequest
@@ -375,6 +376,16 @@ from .link_openstack_request import LinkOpenstackRequest
375
376
  from .link_to_invoice import LinkToInvoice
376
377
  from .link_to_invoice_request import LinkToInvoiceRequest
377
378
  from .logout import Logout
379
+ from .maintenance_announcement import MaintenanceAnnouncement
380
+ from .maintenance_announcement_offering import MaintenanceAnnouncementOffering
381
+ from .maintenance_announcement_offering_request import MaintenanceAnnouncementOfferingRequest
382
+ from .maintenance_announcement_offering_template import MaintenanceAnnouncementOfferingTemplate
383
+ from .maintenance_announcement_offering_template_request import MaintenanceAnnouncementOfferingTemplateRequest
384
+ from .maintenance_announcement_request import MaintenanceAnnouncementRequest
385
+ from .maintenance_announcement_state_enum import MaintenanceAnnouncementStateEnum
386
+ from .maintenance_announcement_template import MaintenanceAnnouncementTemplate
387
+ from .maintenance_announcement_template_request import MaintenanceAnnouncementTemplateRequest
388
+ from .maintenance_type_enum import MaintenanceTypeEnum
378
389
  from .mapping import Mapping
379
390
  from .mapping_request import MappingRequest
380
391
  from .marketplace_categories_list_customers_offerings_state_item import (
@@ -804,6 +815,12 @@ from .patched_invoice_item_update_request import PatchedInvoiceItemUpdateRequest
804
815
  from .patched_issue_request import PatchedIssueRequest
805
816
  from .patched_keycloak_user_group_membership_request import PatchedKeycloakUserGroupMembershipRequest
806
817
  from .patched_lexis_link_request import PatchedLexisLinkRequest
818
+ from .patched_maintenance_announcement_offering_request import PatchedMaintenanceAnnouncementOfferingRequest
819
+ from .patched_maintenance_announcement_offering_template_request import (
820
+ PatchedMaintenanceAnnouncementOfferingTemplateRequest,
821
+ )
822
+ from .patched_maintenance_announcement_request import PatchedMaintenanceAnnouncementRequest
823
+ from .patched_maintenance_announcement_template_request import PatchedMaintenanceAnnouncementTemplateRequest
807
824
  from .patched_marketplace_category_request import PatchedMarketplaceCategoryRequest
808
825
  from .patched_message_template_request import PatchedMessageTemplateRequest
809
826
  from .patched_migration_details_request import PatchedMigrationDetailsRequest
@@ -1216,6 +1233,7 @@ from .template_version import TemplateVersion
1216
1233
  from .tenant import Tenant
1217
1234
  from .token_request import TokenRequest
1218
1235
  from .total_customer_cost import TotalCustomerCost
1236
+ from .update_offering_component_request import UpdateOfferingComponentRequest
1219
1237
  from .user import User
1220
1238
  from .user_agreement import UserAgreement
1221
1239
  from .user_agreement_request import UserAgreementRequest
@@ -1585,6 +1603,7 @@ __all__ = (
1585
1603
  "ImageCreateRequest",
1586
1604
  "ImageCreateResponse",
1587
1605
  "ImageUploadResponse",
1606
+ "ImpactLevelEnum",
1588
1607
  "ImportableResource",
1589
1608
  "ImportResourceRequest",
1590
1609
  "InstanceFlavorChangeRequest",
@@ -1651,6 +1670,16 @@ __all__ = (
1651
1670
  "LinkToInvoice",
1652
1671
  "LinkToInvoiceRequest",
1653
1672
  "Logout",
1673
+ "MaintenanceAnnouncement",
1674
+ "MaintenanceAnnouncementOffering",
1675
+ "MaintenanceAnnouncementOfferingRequest",
1676
+ "MaintenanceAnnouncementOfferingTemplate",
1677
+ "MaintenanceAnnouncementOfferingTemplateRequest",
1678
+ "MaintenanceAnnouncementRequest",
1679
+ "MaintenanceAnnouncementStateEnum",
1680
+ "MaintenanceAnnouncementTemplate",
1681
+ "MaintenanceAnnouncementTemplateRequest",
1682
+ "MaintenanceTypeEnum",
1654
1683
  "Mapping",
1655
1684
  "MappingRequest",
1656
1685
  "MarketplaceCategoriesListCustomersOfferingsStateItem",
@@ -2028,6 +2057,10 @@ __all__ = (
2028
2057
  "PatchedIssueRequest",
2029
2058
  "PatchedKeycloakUserGroupMembershipRequest",
2030
2059
  "PatchedLexisLinkRequest",
2060
+ "PatchedMaintenanceAnnouncementOfferingRequest",
2061
+ "PatchedMaintenanceAnnouncementOfferingTemplateRequest",
2062
+ "PatchedMaintenanceAnnouncementRequest",
2063
+ "PatchedMaintenanceAnnouncementTemplateRequest",
2031
2064
  "PatchedMarketplaceCategoryRequest",
2032
2065
  "PatchedMessageTemplateRequest",
2033
2066
  "PatchedMigrationDetailsRequest",
@@ -2420,6 +2453,7 @@ __all__ = (
2420
2453
  "Tenant",
2421
2454
  "TokenRequest",
2422
2455
  "TotalCustomerCost",
2456
+ "UpdateOfferingComponentRequest",
2423
2457
  "User",
2424
2458
  "UserAgreement",
2425
2459
  "UserAgreementRequest",
@@ -143,6 +143,8 @@ class ConstanceSettings:
143
143
  oidc_user_field (Union[Unset, str]):
144
144
  oidc_cache_timeout (Union[Unset, int]):
145
145
  deactivate_user_if_no_roles (Union[Unset, bool]):
146
+ maintenance_announcement_notify_before_minutes (Union[Unset, int]):
147
+ maintenance_announcement_notify_system (Union[Unset, list[str]]):
146
148
  """
147
149
 
148
150
  site_name: Union[Unset, str] = UNSET
@@ -275,6 +277,8 @@ class ConstanceSettings:
275
277
  oidc_user_field: Union[Unset, str] = UNSET
276
278
  oidc_cache_timeout: Union[Unset, int] = UNSET
277
279
  deactivate_user_if_no_roles: Union[Unset, bool] = UNSET
280
+ maintenance_announcement_notify_before_minutes: Union[Unset, int] = UNSET
281
+ maintenance_announcement_notify_system: Union[Unset, list[str]] = UNSET
278
282
  additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict)
279
283
 
280
284
  def to_dict(self) -> dict[str, Any]:
@@ -590,6 +594,12 @@ class ConstanceSettings:
590
594
 
591
595
  deactivate_user_if_no_roles = self.deactivate_user_if_no_roles
592
596
 
597
+ maintenance_announcement_notify_before_minutes = self.maintenance_announcement_notify_before_minutes
598
+
599
+ maintenance_announcement_notify_system: Union[Unset, list[str]] = UNSET
600
+ if not isinstance(self.maintenance_announcement_notify_system, Unset):
601
+ maintenance_announcement_notify_system = self.maintenance_announcement_notify_system
602
+
593
603
  field_dict: dict[str, Any] = {}
594
604
  field_dict.update(self.additional_properties)
595
605
  field_dict.update({})
@@ -857,6 +867,12 @@ class ConstanceSettings:
857
867
  field_dict["OIDC_CACHE_TIMEOUT"] = oidc_cache_timeout
858
868
  if deactivate_user_if_no_roles is not UNSET:
859
869
  field_dict["DEACTIVATE_USER_IF_NO_ROLES"] = deactivate_user_if_no_roles
870
+ if maintenance_announcement_notify_before_minutes is not UNSET:
871
+ field_dict["MAINTENANCE_ANNOUNCEMENT_NOTIFY_BEFORE_MINUTES"] = (
872
+ maintenance_announcement_notify_before_minutes
873
+ )
874
+ if maintenance_announcement_notify_system is not UNSET:
875
+ field_dict["MAINTENANCE_ANNOUNCEMENT_NOTIFY_SYSTEM"] = maintenance_announcement_notify_system
860
876
 
861
877
  return field_dict
862
878
 
@@ -1211,6 +1227,10 @@ class ConstanceSettings:
1211
1227
 
1212
1228
  deactivate_user_if_no_roles = d.pop("DEACTIVATE_USER_IF_NO_ROLES", UNSET)
1213
1229
 
1230
+ maintenance_announcement_notify_before_minutes = d.pop("MAINTENANCE_ANNOUNCEMENT_NOTIFY_BEFORE_MINUTES", UNSET)
1231
+
1232
+ maintenance_announcement_notify_system = cast(list[str], d.pop("MAINTENANCE_ANNOUNCEMENT_NOTIFY_SYSTEM", UNSET))
1233
+
1214
1234
  constance_settings = cls(
1215
1235
  site_name=site_name,
1216
1236
  site_description=site_description,
@@ -1342,6 +1362,8 @@ class ConstanceSettings:
1342
1362
  oidc_user_field=oidc_user_field,
1343
1363
  oidc_cache_timeout=oidc_cache_timeout,
1344
1364
  deactivate_user_if_no_roles=deactivate_user_if_no_roles,
1365
+ maintenance_announcement_notify_before_minutes=maintenance_announcement_notify_before_minutes,
1366
+ maintenance_announcement_notify_system=maintenance_announcement_notify_system,
1345
1367
  )
1346
1368
 
1347
1369
  constance_settings.additional_properties = d
@@ -145,6 +145,8 @@ class ConstanceSettingsRequest:
145
145
  oidc_user_field (Union[Unset, str]):
146
146
  oidc_cache_timeout (Union[Unset, int]):
147
147
  deactivate_user_if_no_roles (Union[Unset, bool]):
148
+ maintenance_announcement_notify_before_minutes (Union[Unset, int]):
149
+ maintenance_announcement_notify_system (Union[Unset, list[str]]):
148
150
  """
149
151
 
150
152
  site_name: Union[Unset, str] = UNSET
@@ -277,6 +279,8 @@ class ConstanceSettingsRequest:
277
279
  oidc_user_field: Union[Unset, str] = UNSET
278
280
  oidc_cache_timeout: Union[Unset, int] = UNSET
279
281
  deactivate_user_if_no_roles: Union[Unset, bool] = UNSET
282
+ maintenance_announcement_notify_before_minutes: Union[Unset, int] = UNSET
283
+ maintenance_announcement_notify_system: Union[Unset, list[str]] = UNSET
280
284
  additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict)
281
285
 
282
286
  def to_dict(self) -> dict[str, Any]:
@@ -628,6 +632,12 @@ class ConstanceSettingsRequest:
628
632
 
629
633
  deactivate_user_if_no_roles = self.deactivate_user_if_no_roles
630
634
 
635
+ maintenance_announcement_notify_before_minutes = self.maintenance_announcement_notify_before_minutes
636
+
637
+ maintenance_announcement_notify_system: Union[Unset, list[str]] = UNSET
638
+ if not isinstance(self.maintenance_announcement_notify_system, Unset):
639
+ maintenance_announcement_notify_system = self.maintenance_announcement_notify_system
640
+
631
641
  field_dict: dict[str, Any] = {}
632
642
  field_dict.update(self.additional_properties)
633
643
  field_dict.update({})
@@ -895,6 +905,12 @@ class ConstanceSettingsRequest:
895
905
  field_dict["OIDC_CACHE_TIMEOUT"] = oidc_cache_timeout
896
906
  if deactivate_user_if_no_roles is not UNSET:
897
907
  field_dict["DEACTIVATE_USER_IF_NO_ROLES"] = deactivate_user_if_no_roles
908
+ if maintenance_announcement_notify_before_minutes is not UNSET:
909
+ field_dict["MAINTENANCE_ANNOUNCEMENT_NOTIFY_BEFORE_MINUTES"] = (
910
+ maintenance_announcement_notify_before_minutes
911
+ )
912
+ if maintenance_announcement_notify_system is not UNSET:
913
+ field_dict["MAINTENANCE_ANNOUNCEMENT_NOTIFY_SYSTEM"] = maintenance_announcement_notify_system
898
914
 
899
915
  return field_dict
900
916
 
@@ -1345,6 +1361,10 @@ class ConstanceSettingsRequest:
1345
1361
 
1346
1362
  deactivate_user_if_no_roles = d.pop("DEACTIVATE_USER_IF_NO_ROLES", UNSET)
1347
1363
 
1364
+ maintenance_announcement_notify_before_minutes = d.pop("MAINTENANCE_ANNOUNCEMENT_NOTIFY_BEFORE_MINUTES", UNSET)
1365
+
1366
+ maintenance_announcement_notify_system = cast(list[str], d.pop("MAINTENANCE_ANNOUNCEMENT_NOTIFY_SYSTEM", UNSET))
1367
+
1348
1368
  constance_settings_request = cls(
1349
1369
  site_name=site_name,
1350
1370
  site_description=site_description,
@@ -1476,6 +1496,8 @@ class ConstanceSettingsRequest:
1476
1496
  oidc_user_field=oidc_user_field,
1477
1497
  oidc_cache_timeout=oidc_cache_timeout,
1478
1498
  deactivate_user_if_no_roles=deactivate_user_if_no_roles,
1499
+ maintenance_announcement_notify_before_minutes=maintenance_announcement_notify_before_minutes,
1500
+ maintenance_announcement_notify_system=maintenance_announcement_notify_system,
1479
1501
  )
1480
1502
 
1481
1503
  constance_settings_request.additional_properties = d
@@ -0,0 +1,11 @@
1
+ from enum import IntEnum
2
+
3
+
4
+ class ImpactLevelEnum(IntEnum):
5
+ VALUE_1 = 1
6
+ VALUE_2 = 2
7
+ VALUE_3 = 3
8
+ VALUE_4 = 4
9
+
10
+ def __str__(self) -> str:
11
+ return str(self.value)
@@ -0,0 +1,225 @@
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_announcement_state_enum import MaintenanceAnnouncementStateEnum
11
+ from ..models.maintenance_type_enum import MaintenanceTypeEnum
12
+ from ..types import UNSET, Unset
13
+
14
+ if TYPE_CHECKING:
15
+ from ..models.maintenance_announcement_offering import MaintenanceAnnouncementOffering
16
+
17
+
18
+ T = TypeVar("T", bound="MaintenanceAnnouncement")
19
+
20
+
21
+ @_attrs_define
22
+ class MaintenanceAnnouncement:
23
+ """
24
+ Attributes:
25
+ url (str):
26
+ uuid (UUID):
27
+ name (str):
28
+ state (MaintenanceAnnouncementStateEnum):
29
+ scheduled_start (datetime.datetime): When the maintenance is scheduled to begin
30
+ scheduled_end (datetime.datetime): When the maintenance is scheduled to complete
31
+ actual_start (Union[None, datetime.datetime]): When the maintenance actually began
32
+ actual_end (Union[None, datetime.datetime]): When the maintenance actually completed
33
+ service_provider (str): Service provider announcing the maintenance
34
+ created_by (Union[None, str]):
35
+ affected_offerings (list['MaintenanceAnnouncementOffering']):
36
+ message (Union[Unset, str]):
37
+ maintenance_type (Union[Unset, MaintenanceTypeEnum]):
38
+ """
39
+
40
+ url: str
41
+ uuid: UUID
42
+ name: str
43
+ state: MaintenanceAnnouncementStateEnum
44
+ scheduled_start: datetime.datetime
45
+ scheduled_end: datetime.datetime
46
+ actual_start: Union[None, datetime.datetime]
47
+ actual_end: Union[None, datetime.datetime]
48
+ service_provider: str
49
+ created_by: Union[None, str]
50
+ affected_offerings: list["MaintenanceAnnouncementOffering"]
51
+ message: Union[Unset, str] = UNSET
52
+ maintenance_type: Union[Unset, MaintenanceTypeEnum] = UNSET
53
+ additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict)
54
+
55
+ def to_dict(self) -> dict[str, Any]:
56
+ url = self.url
57
+
58
+ uuid = str(self.uuid)
59
+
60
+ name = self.name
61
+
62
+ state = self.state.value
63
+
64
+ scheduled_start = self.scheduled_start.isoformat()
65
+
66
+ scheduled_end = self.scheduled_end.isoformat()
67
+
68
+ actual_start: Union[None, str]
69
+ if isinstance(self.actual_start, datetime.datetime):
70
+ actual_start = self.actual_start.isoformat()
71
+ else:
72
+ actual_start = self.actual_start
73
+
74
+ actual_end: Union[None, str]
75
+ if isinstance(self.actual_end, datetime.datetime):
76
+ actual_end = self.actual_end.isoformat()
77
+ else:
78
+ actual_end = self.actual_end
79
+
80
+ service_provider = self.service_provider
81
+
82
+ created_by: Union[None, str]
83
+ created_by = self.created_by
84
+
85
+ affected_offerings = []
86
+ for affected_offerings_item_data in self.affected_offerings:
87
+ affected_offerings_item = affected_offerings_item_data.to_dict()
88
+ affected_offerings.append(affected_offerings_item)
89
+
90
+ message = self.message
91
+
92
+ maintenance_type: Union[Unset, int] = UNSET
93
+ if not isinstance(self.maintenance_type, Unset):
94
+ maintenance_type = self.maintenance_type.value
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
+ "state": state,
104
+ "scheduled_start": scheduled_start,
105
+ "scheduled_end": scheduled_end,
106
+ "actual_start": actual_start,
107
+ "actual_end": actual_end,
108
+ "service_provider": service_provider,
109
+ "created_by": created_by,
110
+ "affected_offerings": affected_offerings,
111
+ }
112
+ )
113
+ if message is not UNSET:
114
+ field_dict["message"] = message
115
+ if maintenance_type is not UNSET:
116
+ field_dict["maintenance_type"] = maintenance_type
117
+
118
+ return field_dict
119
+
120
+ @classmethod
121
+ def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T:
122
+ from ..models.maintenance_announcement_offering import MaintenanceAnnouncementOffering
123
+
124
+ d = dict(src_dict)
125
+ url = d.pop("url")
126
+
127
+ uuid = UUID(d.pop("uuid"))
128
+
129
+ name = d.pop("name")
130
+
131
+ state = MaintenanceAnnouncementStateEnum(d.pop("state"))
132
+
133
+ scheduled_start = isoparse(d.pop("scheduled_start"))
134
+
135
+ scheduled_end = isoparse(d.pop("scheduled_end"))
136
+
137
+ def _parse_actual_start(data: object) -> Union[None, datetime.datetime]:
138
+ if data is None:
139
+ return data
140
+ try:
141
+ if not isinstance(data, str):
142
+ raise TypeError()
143
+ actual_start_type_0 = isoparse(data)
144
+
145
+ return actual_start_type_0
146
+ except: # noqa: E722
147
+ pass
148
+ return cast(Union[None, datetime.datetime], data)
149
+
150
+ actual_start = _parse_actual_start(d.pop("actual_start"))
151
+
152
+ def _parse_actual_end(data: object) -> Union[None, datetime.datetime]:
153
+ if data is None:
154
+ return data
155
+ try:
156
+ if not isinstance(data, str):
157
+ raise TypeError()
158
+ actual_end_type_0 = isoparse(data)
159
+
160
+ return actual_end_type_0
161
+ except: # noqa: E722
162
+ pass
163
+ return cast(Union[None, datetime.datetime], data)
164
+
165
+ actual_end = _parse_actual_end(d.pop("actual_end"))
166
+
167
+ service_provider = d.pop("service_provider")
168
+
169
+ def _parse_created_by(data: object) -> Union[None, str]:
170
+ if data is None:
171
+ return data
172
+ return cast(Union[None, str], data)
173
+
174
+ created_by = _parse_created_by(d.pop("created_by"))
175
+
176
+ affected_offerings = []
177
+ _affected_offerings = d.pop("affected_offerings")
178
+ for affected_offerings_item_data in _affected_offerings:
179
+ affected_offerings_item = MaintenanceAnnouncementOffering.from_dict(affected_offerings_item_data)
180
+
181
+ affected_offerings.append(affected_offerings_item)
182
+
183
+ message = d.pop("message", UNSET)
184
+
185
+ _maintenance_type = d.pop("maintenance_type", UNSET)
186
+ maintenance_type: Union[Unset, MaintenanceTypeEnum]
187
+ if isinstance(_maintenance_type, Unset):
188
+ maintenance_type = UNSET
189
+ else:
190
+ maintenance_type = MaintenanceTypeEnum(_maintenance_type)
191
+
192
+ maintenance_announcement = cls(
193
+ url=url,
194
+ uuid=uuid,
195
+ name=name,
196
+ state=state,
197
+ scheduled_start=scheduled_start,
198
+ scheduled_end=scheduled_end,
199
+ actual_start=actual_start,
200
+ actual_end=actual_end,
201
+ service_provider=service_provider,
202
+ created_by=created_by,
203
+ affected_offerings=affected_offerings,
204
+ message=message,
205
+ maintenance_type=maintenance_type,
206
+ )
207
+
208
+ maintenance_announcement.additional_properties = d
209
+ return maintenance_announcement
210
+
211
+ @property
212
+ def additional_keys(self) -> list[str]:
213
+ return list(self.additional_properties.keys())
214
+
215
+ def __getitem__(self, key: str) -> Any:
216
+ return self.additional_properties[key]
217
+
218
+ def __setitem__(self, key: str, value: Any) -> None:
219
+ self.additional_properties[key] = value
220
+
221
+ def __delitem__(self, key: str) -> None:
222
+ del self.additional_properties[key]
223
+
224
+ def __contains__(self, key: str) -> bool:
225
+ return key in self.additional_properties
@@ -0,0 +1,112 @@
1
+ from collections.abc import Mapping
2
+ from typing import Any, TypeVar, Union
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 ..models.impact_level_enum import ImpactLevelEnum
9
+ from ..types import UNSET, Unset
10
+
11
+ T = TypeVar("T", bound="MaintenanceAnnouncementOffering")
12
+
13
+
14
+ @_attrs_define
15
+ class MaintenanceAnnouncementOffering:
16
+ """
17
+ Attributes:
18
+ url (str):
19
+ uuid (UUID):
20
+ maintenance (str):
21
+ offering (str):
22
+ impact_level (Union[Unset, ImpactLevelEnum]):
23
+ impact_description (Union[Unset, str]): Specific description of how this offering will be affected
24
+ """
25
+
26
+ url: str
27
+ uuid: UUID
28
+ maintenance: str
29
+ offering: str
30
+ impact_level: Union[Unset, ImpactLevelEnum] = UNSET
31
+ impact_description: Union[Unset, str] = UNSET
32
+ additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict)
33
+
34
+ def to_dict(self) -> dict[str, Any]:
35
+ url = self.url
36
+
37
+ uuid = str(self.uuid)
38
+
39
+ maintenance = self.maintenance
40
+
41
+ offering = self.offering
42
+
43
+ impact_level: Union[Unset, int] = UNSET
44
+ if not isinstance(self.impact_level, Unset):
45
+ impact_level = self.impact_level.value
46
+
47
+ impact_description = self.impact_description
48
+
49
+ field_dict: dict[str, Any] = {}
50
+ field_dict.update(self.additional_properties)
51
+ field_dict.update(
52
+ {
53
+ "url": url,
54
+ "uuid": uuid,
55
+ "maintenance": maintenance,
56
+ "offering": offering,
57
+ }
58
+ )
59
+ if impact_level is not UNSET:
60
+ field_dict["impact_level"] = impact_level
61
+ if impact_description is not UNSET:
62
+ field_dict["impact_description"] = impact_description
63
+
64
+ return field_dict
65
+
66
+ @classmethod
67
+ def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T:
68
+ d = dict(src_dict)
69
+ url = d.pop("url")
70
+
71
+ uuid = UUID(d.pop("uuid"))
72
+
73
+ maintenance = d.pop("maintenance")
74
+
75
+ offering = d.pop("offering")
76
+
77
+ _impact_level = d.pop("impact_level", UNSET)
78
+ impact_level: Union[Unset, ImpactLevelEnum]
79
+ if isinstance(_impact_level, Unset):
80
+ impact_level = UNSET
81
+ else:
82
+ impact_level = ImpactLevelEnum(_impact_level)
83
+
84
+ impact_description = d.pop("impact_description", UNSET)
85
+
86
+ maintenance_announcement_offering = cls(
87
+ url=url,
88
+ uuid=uuid,
89
+ maintenance=maintenance,
90
+ offering=offering,
91
+ impact_level=impact_level,
92
+ impact_description=impact_description,
93
+ )
94
+
95
+ maintenance_announcement_offering.additional_properties = d
96
+ return maintenance_announcement_offering
97
+
98
+ @property
99
+ def additional_keys(self) -> list[str]:
100
+ return list(self.additional_properties.keys())
101
+
102
+ def __getitem__(self, key: str) -> Any:
103
+ return self.additional_properties[key]
104
+
105
+ def __setitem__(self, key: str, value: Any) -> None:
106
+ self.additional_properties[key] = value
107
+
108
+ def __delitem__(self, key: str) -> None:
109
+ del self.additional_properties[key]
110
+
111
+ def __contains__(self, key: str) -> bool:
112
+ return key in self.additional_properties
@@ -0,0 +1,95 @@
1
+ from collections.abc import Mapping
2
+ from typing import Any, TypeVar, Union
3
+
4
+ from attrs import define as _attrs_define
5
+ from attrs import field as _attrs_field
6
+
7
+ from ..models.impact_level_enum import ImpactLevelEnum
8
+ from ..types import UNSET, Unset
9
+
10
+ T = TypeVar("T", bound="MaintenanceAnnouncementOfferingRequest")
11
+
12
+
13
+ @_attrs_define
14
+ class MaintenanceAnnouncementOfferingRequest:
15
+ """
16
+ Attributes:
17
+ maintenance (str):
18
+ offering (str):
19
+ impact_level (Union[Unset, ImpactLevelEnum]):
20
+ impact_description (Union[Unset, str]): Specific description of how this offering will be affected
21
+ """
22
+
23
+ maintenance: str
24
+ offering: str
25
+ impact_level: Union[Unset, ImpactLevelEnum] = UNSET
26
+ impact_description: Union[Unset, str] = UNSET
27
+ additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict)
28
+
29
+ def to_dict(self) -> dict[str, Any]:
30
+ maintenance = self.maintenance
31
+
32
+ offering = self.offering
33
+
34
+ impact_level: Union[Unset, int] = UNSET
35
+ if not isinstance(self.impact_level, Unset):
36
+ impact_level = self.impact_level.value
37
+
38
+ impact_description = self.impact_description
39
+
40
+ field_dict: dict[str, Any] = {}
41
+ field_dict.update(self.additional_properties)
42
+ field_dict.update(
43
+ {
44
+ "maintenance": maintenance,
45
+ "offering": offering,
46
+ }
47
+ )
48
+ if impact_level is not UNSET:
49
+ field_dict["impact_level"] = impact_level
50
+ if impact_description is not UNSET:
51
+ field_dict["impact_description"] = impact_description
52
+
53
+ return field_dict
54
+
55
+ @classmethod
56
+ def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T:
57
+ d = dict(src_dict)
58
+ maintenance = d.pop("maintenance")
59
+
60
+ offering = d.pop("offering")
61
+
62
+ _impact_level = d.pop("impact_level", UNSET)
63
+ impact_level: Union[Unset, ImpactLevelEnum]
64
+ if isinstance(_impact_level, Unset):
65
+ impact_level = UNSET
66
+ else:
67
+ impact_level = ImpactLevelEnum(_impact_level)
68
+
69
+ impact_description = d.pop("impact_description", UNSET)
70
+
71
+ maintenance_announcement_offering_request = cls(
72
+ maintenance=maintenance,
73
+ offering=offering,
74
+ impact_level=impact_level,
75
+ impact_description=impact_description,
76
+ )
77
+
78
+ maintenance_announcement_offering_request.additional_properties = d
79
+ return maintenance_announcement_offering_request
80
+
81
+ @property
82
+ def additional_keys(self) -> list[str]:
83
+ return list(self.additional_properties.keys())
84
+
85
+ def __getitem__(self, key: str) -> Any:
86
+ return self.additional_properties[key]
87
+
88
+ def __setitem__(self, key: str, value: Any) -> None:
89
+ self.additional_properties[key] = value
90
+
91
+ def __delitem__(self, key: str) -> None:
92
+ del self.additional_properties[key]
93
+
94
+ def __contains__(self, key: str) -> bool:
95
+ return key in self.additional_properties