waldur-api-client 7.6.8__py3-none-any.whl → 7.7.0__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.

Potentially problematic release.


This version of waldur-api-client might be problematic. Click here for more details.

Files changed (91) hide show
  1. waldur_api_client/api/broadcast_messages/broadcast_messages_schedule.py +89 -0
  2. waldur_api_client/api/call_proposal_project_role_mappings/call_proposal_project_role_mappings_create.py +152 -0
  3. waldur_api_client/api/call_proposal_project_role_mappings/call_proposal_project_role_mappings_destroy.py +89 -0
  4. waldur_api_client/api/call_proposal_project_role_mappings/call_proposal_project_role_mappings_list.py +194 -0
  5. waldur_api_client/api/call_proposal_project_role_mappings/call_proposal_project_role_mappings_partial_update.py +166 -0
  6. waldur_api_client/api/call_proposal_project_role_mappings/call_proposal_project_role_mappings_retrieve.py +144 -0
  7. waldur_api_client/api/call_proposal_project_role_mappings/call_proposal_project_role_mappings_update.py +166 -0
  8. waldur_api_client/api/invoices/invoices_list.py +0 -30
  9. waldur_api_client/api/invoices/invoices_stats_list.py +0 -30
  10. waldur_api_client/api/marketplace_maintenance_announcement_offerings/__init__.py +1 -0
  11. waldur_api_client/api/marketplace_maintenance_announcement_offerings/marketplace_maintenance_announcement_offerings_create.py +152 -0
  12. waldur_api_client/api/marketplace_maintenance_announcement_offerings/marketplace_maintenance_announcement_offerings_destroy.py +89 -0
  13. waldur_api_client/api/marketplace_maintenance_announcement_offerings/marketplace_maintenance_announcement_offerings_list.py +175 -0
  14. waldur_api_client/api/marketplace_maintenance_announcement_offerings/marketplace_maintenance_announcement_offerings_partial_update.py +166 -0
  15. waldur_api_client/api/marketplace_maintenance_announcement_offerings/marketplace_maintenance_announcement_offerings_retrieve.py +144 -0
  16. waldur_api_client/api/marketplace_maintenance_announcement_offerings/marketplace_maintenance_announcement_offerings_update.py +166 -0
  17. waldur_api_client/api/marketplace_maintenance_announcement_template_offerings/__init__.py +1 -0
  18. waldur_api_client/api/marketplace_maintenance_announcement_template_offerings/marketplace_maintenance_announcement_template_offerings_create.py +152 -0
  19. waldur_api_client/api/marketplace_maintenance_announcement_template_offerings/marketplace_maintenance_announcement_template_offerings_destroy.py +89 -0
  20. waldur_api_client/api/marketplace_maintenance_announcement_template_offerings/marketplace_maintenance_announcement_template_offerings_list.py +175 -0
  21. waldur_api_client/api/marketplace_maintenance_announcement_template_offerings/marketplace_maintenance_announcement_template_offerings_partial_update.py +168 -0
  22. waldur_api_client/api/marketplace_maintenance_announcement_template_offerings/marketplace_maintenance_announcement_template_offerings_retrieve.py +144 -0
  23. waldur_api_client/api/marketplace_maintenance_announcement_template_offerings/marketplace_maintenance_announcement_template_offerings_update.py +166 -0
  24. waldur_api_client/api/marketplace_maintenance_announcements/__init__.py +1 -0
  25. waldur_api_client/api/{autoprovisioning_rule_plans/autoprovisioning_rule_plans_create.py → marketplace_maintenance_announcements/marketplace_maintenance_announcements_create.py} +25 -23
  26. waldur_api_client/api/marketplace_maintenance_announcements/marketplace_maintenance_announcements_destroy.py +89 -0
  27. waldur_api_client/api/{autoprovisioning_rule_plans/autoprovisioning_rule_plans_list.py → marketplace_maintenance_announcements/marketplace_maintenance_announcements_list.py} +15 -13
  28. waldur_api_client/api/{autoprovisioning_rule_plans/autoprovisioning_rule_plans_partial_update.py → marketplace_maintenance_announcements/marketplace_maintenance_announcements_partial_update.py} +25 -23
  29. waldur_api_client/api/{autoprovisioning_rule_plans/autoprovisioning_rule_plans_retrieve.py → marketplace_maintenance_announcements/marketplace_maintenance_announcements_retrieve.py} +15 -13
  30. waldur_api_client/api/{autoprovisioning_rule_plans/autoprovisioning_rule_plans_update.py → marketplace_maintenance_announcements/marketplace_maintenance_announcements_update.py} +25 -23
  31. waldur_api_client/api/marketplace_maintenance_announcements_template/__init__.py +1 -0
  32. waldur_api_client/api/marketplace_maintenance_announcements_template/marketplace_maintenance_announcements_template_create.py +152 -0
  33. waldur_api_client/api/marketplace_maintenance_announcements_template/marketplace_maintenance_announcements_template_destroy.py +89 -0
  34. waldur_api_client/api/marketplace_maintenance_announcements_template/marketplace_maintenance_announcements_template_list.py +175 -0
  35. waldur_api_client/api/marketplace_maintenance_announcements_template/marketplace_maintenance_announcements_template_partial_update.py +166 -0
  36. waldur_api_client/api/marketplace_maintenance_announcements_template/marketplace_maintenance_announcements_template_retrieve.py +144 -0
  37. waldur_api_client/api/marketplace_maintenance_announcements_template/marketplace_maintenance_announcements_template_update.py +166 -0
  38. waldur_api_client/api/{autoprovisioning_rule_plans/autoprovisioning_rule_plans_destroy.py → marketplace_plans/marketplace_plans_destroy.py} +1 -1
  39. waldur_api_client/api/marketplace_provider_offerings/marketplace_provider_offerings_update_offering_component.py +6 -6
  40. waldur_api_client/api/openstack_volume_types/openstack_volume_types_names_retrieve.py +118 -0
  41. waldur_api_client/models/__init__.py +52 -18
  42. waldur_api_client/models/constance_settings.py +22 -0
  43. waldur_api_client/models/constance_settings_request.py +22 -0
  44. waldur_api_client/models/event_types_enum.py +1 -0
  45. waldur_api_client/models/impact_level_enum.py +11 -0
  46. waldur_api_client/models/maintenance_announcement.py +225 -0
  47. waldur_api_client/models/maintenance_announcement_offering.py +112 -0
  48. waldur_api_client/models/maintenance_announcement_offering_request.py +95 -0
  49. waldur_api_client/models/maintenance_announcement_offering_template.py +112 -0
  50. waldur_api_client/models/maintenance_announcement_offering_template_request.py +95 -0
  51. waldur_api_client/models/maintenance_announcement_request.py +113 -0
  52. waldur_api_client/models/maintenance_announcement_state_enum.py +12 -0
  53. waldur_api_client/models/maintenance_announcement_template.py +134 -0
  54. waldur_api_client/models/maintenance_announcement_template_request.py +95 -0
  55. waldur_api_client/models/maintenance_type_enum.py +12 -0
  56. waldur_api_client/models/merged_plugin_options.py +1 -1
  57. waldur_api_client/models/merged_plugin_options_request.py +1 -1
  58. waldur_api_client/models/offering_component.py +15 -4
  59. waldur_api_client/models/patched_maintenance_announcement_offering_request.py +94 -0
  60. waldur_api_client/models/patched_maintenance_announcement_offering_template_request.py +94 -0
  61. waldur_api_client/models/patched_maintenance_announcement_request.py +128 -0
  62. waldur_api_client/models/patched_maintenance_announcement_template_request.py +94 -0
  63. waldur_api_client/models/patched_proposal_project_role_mapping_request.py +88 -0
  64. waldur_api_client/models/patched_protected_call_request.py +0 -17
  65. waldur_api_client/models/patched_rule_request.py +90 -1
  66. waldur_api_client/models/{patched_rule_plans_request_limits.py → patched_rule_request_plan_attributes.py} +5 -5
  67. waldur_api_client/models/patched_rule_request_plan_limits.py +44 -0
  68. waldur_api_client/models/proposal_project_role_mapping.py +122 -0
  69. waldur_api_client/models/proposal_project_role_mapping_request.py +89 -0
  70. waldur_api_client/models/proposal_protected_calls_list_field_item.py +0 -3
  71. waldur_api_client/models/proposal_protected_calls_retrieve_field_item.py +0 -3
  72. waldur_api_client/models/protected_call.py +0 -34
  73. waldur_api_client/models/protected_call_request.py +0 -17
  74. waldur_api_client/models/provider_offering_details.py +1 -1
  75. waldur_api_client/models/public_offering_details.py +1 -1
  76. waldur_api_client/models/rule.py +99 -7
  77. waldur_api_client/models/{rule_plans_attributes.py → rule_plan_attributes.py} +5 -5
  78. waldur_api_client/models/{rule_plans_limits.py → rule_plan_limits.py} +5 -5
  79. waldur_api_client/models/rule_request.py +89 -1
  80. waldur_api_client/models/{rule_plans_request_attributes.py → rule_request_plan_attributes.py} +5 -5
  81. waldur_api_client/models/{rule_plans_request_limits.py → rule_request_plan_limits.py} +5 -5
  82. waldur_api_client/models/update_offering_component_request.py +274 -0
  83. {waldur_api_client-7.6.8.dist-info → waldur_api_client-7.7.0.dist-info}/METADATA +1 -1
  84. {waldur_api_client-7.6.8.dist-info → waldur_api_client-7.7.0.dist-info}/RECORD +87 -40
  85. waldur_api_client/models/patched_rule_plans_request.py +0 -108
  86. waldur_api_client/models/patched_rule_plans_request_attributes.py +0 -44
  87. waldur_api_client/models/rule_plans.py +0 -126
  88. waldur_api_client/models/rule_plans_request.py +0 -109
  89. /waldur_api_client/api/{autoprovisioning_rule_plans → call_proposal_project_role_mappings}/__init__.py +0 -0
  90. {waldur_api_client-7.6.8.dist-info → waldur_api_client-7.7.0.dist-info}/LICENSE +0 -0
  91. {waldur_api_client-7.6.8.dist-info → waldur_api_client-7.7.0.dist-info}/WHEEL +0 -0
@@ -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
@@ -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="MaintenanceAnnouncementOfferingTemplate")
12
+
13
+
14
+ @_attrs_define
15
+ class MaintenanceAnnouncementOfferingTemplate:
16
+ """
17
+ Attributes:
18
+ url (str):
19
+ uuid (UUID):
20
+ maintenance_template (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_template: 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_template = self.maintenance_template
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_template": maintenance_template,
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_template = d.pop("maintenance_template")
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_template = cls(
87
+ url=url,
88
+ uuid=uuid,
89
+ maintenance_template=maintenance_template,
90
+ offering=offering,
91
+ impact_level=impact_level,
92
+ impact_description=impact_description,
93
+ )
94
+
95
+ maintenance_announcement_offering_template.additional_properties = d
96
+ return maintenance_announcement_offering_template
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="MaintenanceAnnouncementOfferingTemplateRequest")
11
+
12
+
13
+ @_attrs_define
14
+ class MaintenanceAnnouncementOfferingTemplateRequest:
15
+ """
16
+ Attributes:
17
+ maintenance_template (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_template: 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_template = self.maintenance_template
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_template": maintenance_template,
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_template = d.pop("maintenance_template")
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_template_request = cls(
72
+ maintenance_template=maintenance_template,
73
+ offering=offering,
74
+ impact_level=impact_level,
75
+ impact_description=impact_description,
76
+ )
77
+
78
+ maintenance_announcement_offering_template_request.additional_properties = d
79
+ return maintenance_announcement_offering_template_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