waldur-api-client 7.6.7__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 (91) hide show
  1. waldur_api_client/api/backend_resource_requests/__init__.py +1 -0
  2. waldur_api_client/api/backend_resource_requests/backend_resource_requests_create.py +150 -0
  3. waldur_api_client/api/backend_resource_requests/backend_resource_requests_list.py +313 -0
  4. waldur_api_client/api/backend_resource_requests/backend_resource_requests_retrieve.py +142 -0
  5. waldur_api_client/api/backend_resource_requests/backend_resource_requests_set_done.py +144 -0
  6. waldur_api_client/api/backend_resource_requests/backend_resource_requests_set_erred.py +166 -0
  7. waldur_api_client/api/backend_resource_requests/backend_resource_requests_start_processing.py +146 -0
  8. waldur_api_client/api/backend_resources/__init__.py +1 -0
  9. waldur_api_client/api/backend_resources/backend_resources_create.py +150 -0
  10. waldur_api_client/api/backend_resources/backend_resources_destroy.py +89 -0
  11. waldur_api_client/api/backend_resources/backend_resources_import_resource.py +162 -0
  12. waldur_api_client/api/backend_resources/backend_resources_list.py +315 -0
  13. waldur_api_client/api/backend_resources/backend_resources_retrieve.py +142 -0
  14. waldur_api_client/api/invoices/invoices_list.py +0 -30
  15. waldur_api_client/api/invoices/invoices_stats_list.py +0 -30
  16. waldur_api_client/api/marketplace_maintenance_announcement_offerings/__init__.py +1 -0
  17. waldur_api_client/api/marketplace_maintenance_announcement_offerings/marketplace_maintenance_announcement_offerings_create.py +152 -0
  18. waldur_api_client/api/marketplace_maintenance_announcement_offerings/marketplace_maintenance_announcement_offerings_destroy.py +89 -0
  19. waldur_api_client/api/marketplace_maintenance_announcement_offerings/marketplace_maintenance_announcement_offerings_list.py +175 -0
  20. waldur_api_client/api/marketplace_maintenance_announcement_offerings/marketplace_maintenance_announcement_offerings_partial_update.py +166 -0
  21. waldur_api_client/api/marketplace_maintenance_announcement_offerings/marketplace_maintenance_announcement_offerings_retrieve.py +144 -0
  22. waldur_api_client/api/marketplace_maintenance_announcement_offerings/marketplace_maintenance_announcement_offerings_update.py +166 -0
  23. waldur_api_client/api/marketplace_maintenance_announcement_template_offerings/__init__.py +1 -0
  24. waldur_api_client/api/marketplace_maintenance_announcement_template_offerings/marketplace_maintenance_announcement_template_offerings_create.py +152 -0
  25. waldur_api_client/api/marketplace_maintenance_announcement_template_offerings/marketplace_maintenance_announcement_template_offerings_destroy.py +89 -0
  26. waldur_api_client/api/marketplace_maintenance_announcement_template_offerings/marketplace_maintenance_announcement_template_offerings_list.py +175 -0
  27. waldur_api_client/api/marketplace_maintenance_announcement_template_offerings/marketplace_maintenance_announcement_template_offerings_partial_update.py +168 -0
  28. waldur_api_client/api/marketplace_maintenance_announcement_template_offerings/marketplace_maintenance_announcement_template_offerings_retrieve.py +144 -0
  29. waldur_api_client/api/marketplace_maintenance_announcement_template_offerings/marketplace_maintenance_announcement_template_offerings_update.py +166 -0
  30. waldur_api_client/api/marketplace_maintenance_announcements/__init__.py +1 -0
  31. waldur_api_client/api/marketplace_maintenance_announcements/marketplace_maintenance_announcements_create.py +150 -0
  32. waldur_api_client/api/marketplace_maintenance_announcements/marketplace_maintenance_announcements_destroy.py +89 -0
  33. waldur_api_client/api/marketplace_maintenance_announcements/marketplace_maintenance_announcements_list.py +175 -0
  34. waldur_api_client/api/marketplace_maintenance_announcements/marketplace_maintenance_announcements_partial_update.py +164 -0
  35. waldur_api_client/api/marketplace_maintenance_announcements/marketplace_maintenance_announcements_retrieve.py +142 -0
  36. waldur_api_client/api/marketplace_maintenance_announcements/marketplace_maintenance_announcements_update.py +164 -0
  37. waldur_api_client/api/marketplace_maintenance_announcements_template/__init__.py +1 -0
  38. waldur_api_client/api/marketplace_maintenance_announcements_template/marketplace_maintenance_announcements_template_create.py +152 -0
  39. waldur_api_client/api/marketplace_maintenance_announcements_template/marketplace_maintenance_announcements_template_destroy.py +89 -0
  40. waldur_api_client/api/marketplace_maintenance_announcements_template/marketplace_maintenance_announcements_template_list.py +175 -0
  41. waldur_api_client/api/marketplace_maintenance_announcements_template/marketplace_maintenance_announcements_template_partial_update.py +166 -0
  42. waldur_api_client/api/marketplace_maintenance_announcements_template/marketplace_maintenance_announcements_template_retrieve.py +144 -0
  43. waldur_api_client/api/marketplace_maintenance_announcements_template/marketplace_maintenance_announcements_template_update.py +166 -0
  44. waldur_api_client/api/marketplace_provider_offerings/marketplace_provider_offerings_update_offering_component.py +6 -6
  45. waldur_api_client/api/marketplace_service_providers/marketplace_service_providers_customer_projects_list.py +15 -0
  46. waldur_api_client/api/marketplace_service_providers/marketplace_service_providers_projects_list.py +15 -0
  47. waldur_api_client/api/openstack_volume_types/openstack_volume_types_names_retrieve.py +118 -0
  48. waldur_api_client/api/projects/projects_list.py +15 -0
  49. waldur_api_client/models/__init__.py +60 -2
  50. waldur_api_client/models/backend_resource.py +162 -0
  51. waldur_api_client/models/backend_resource_import_request.py +67 -0
  52. waldur_api_client/models/backend_resource_req.py +162 -0
  53. waldur_api_client/models/backend_resource_req_request.py +60 -0
  54. waldur_api_client/models/backend_resource_req_state_enum.py +11 -0
  55. waldur_api_client/models/backend_resource_request.py +96 -0
  56. waldur_api_client/models/backend_resource_request_set_erred_request.py +68 -0
  57. waldur_api_client/models/backend_resource_requests_list_o_item.py +9 -0
  58. waldur_api_client/models/backend_resource_requests_list_state_item.py +11 -0
  59. waldur_api_client/models/{order_details_attributes.py → backend_resource_requests_set_done_response_200.py} +6 -6
  60. waldur_api_client/models/backend_resource_requests_set_erred_response_200.py +44 -0
  61. waldur_api_client/models/backend_resource_requests_start_processing_response_200.py +44 -0
  62. waldur_api_client/models/backend_resources_list_o_item.py +9 -0
  63. waldur_api_client/models/constance_settings.py +22 -0
  64. waldur_api_client/models/constance_settings_request.py +22 -0
  65. waldur_api_client/models/event_types_enum.py +4 -0
  66. waldur_api_client/models/impact_level_enum.py +11 -0
  67. waldur_api_client/models/maintenance_announcement.py +225 -0
  68. waldur_api_client/models/maintenance_announcement_offering.py +112 -0
  69. waldur_api_client/models/maintenance_announcement_offering_request.py +95 -0
  70. waldur_api_client/models/maintenance_announcement_offering_template.py +112 -0
  71. waldur_api_client/models/maintenance_announcement_offering_template_request.py +95 -0
  72. waldur_api_client/models/maintenance_announcement_request.py +113 -0
  73. waldur_api_client/models/maintenance_announcement_state_enum.py +12 -0
  74. waldur_api_client/models/maintenance_announcement_template.py +134 -0
  75. waldur_api_client/models/maintenance_announcement_template_request.py +95 -0
  76. waldur_api_client/models/maintenance_type_enum.py +12 -0
  77. waldur_api_client/models/merged_plugin_options.py +21 -1
  78. waldur_api_client/models/merged_plugin_options_request.py +21 -1
  79. waldur_api_client/models/offering_component.py +15 -4
  80. waldur_api_client/models/order_details.py +4 -14
  81. waldur_api_client/models/patched_maintenance_announcement_offering_request.py +94 -0
  82. waldur_api_client/models/patched_maintenance_announcement_offering_template_request.py +94 -0
  83. waldur_api_client/models/patched_maintenance_announcement_request.py +128 -0
  84. waldur_api_client/models/patched_maintenance_announcement_template_request.py +94 -0
  85. waldur_api_client/models/update_offering_component_request.py +274 -0
  86. waldur_api_client/models/user_agreement.py +9 -11
  87. waldur_api_client/models/user_agreement_request.py +9 -11
  88. {waldur_api_client-7.6.7.dist-info → waldur_api_client-7.6.9.dist-info}/METADATA +1 -1
  89. {waldur_api_client-7.6.7.dist-info → waldur_api_client-7.6.9.dist-info}/RECORD +91 -21
  90. {waldur_api_client-7.6.7.dist-info → waldur_api_client-7.6.9.dist-info}/LICENSE +0 -0
  91. {waldur_api_client-7.6.7.dist-info → waldur_api_client-7.6.9.dist-info}/WHEEL +0 -0
@@ -105,11 +105,15 @@ class EventTypesEnum(str, Enum):
105
105
  OPENSTACK_PORT_PULLED = "openstack_port_pulled"
106
106
  OPENSTACK_PORT_UPDATED = "openstack_port_updated"
107
107
  OPENSTACK_ROUTER_UPDATED = "openstack_router_updated"
108
+ OPENSTACK_SECURITY_GROUP_ADDED_LOCALLY = "openstack_security_group_added_locally"
109
+ OPENSTACK_SECURITY_GROUP_ADDED_REMOTELY = "openstack_security_group_added_remotely"
108
110
  OPENSTACK_SECURITY_GROUP_CLEANED = "openstack_security_group_cleaned"
109
111
  OPENSTACK_SECURITY_GROUP_CREATED = "openstack_security_group_created"
110
112
  OPENSTACK_SECURITY_GROUP_DELETED = "openstack_security_group_deleted"
111
113
  OPENSTACK_SECURITY_GROUP_IMPORTED = "openstack_security_group_imported"
112
114
  OPENSTACK_SECURITY_GROUP_PULLED = "openstack_security_group_pulled"
115
+ OPENSTACK_SECURITY_GROUP_REMOVED_LOCALLY = "openstack_security_group_removed_locally"
116
+ OPENSTACK_SECURITY_GROUP_REMOVED_REMOTELY = "openstack_security_group_removed_remotely"
113
117
  OPENSTACK_SECURITY_GROUP_RULE_CLEANED = "openstack_security_group_rule_cleaned"
114
118
  OPENSTACK_SECURITY_GROUP_RULE_CREATED = "openstack_security_group_rule_created"
115
119
  OPENSTACK_SECURITY_GROUP_RULE_DELETED = "openstack_security_group_rule_deleted"
@@ -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
@@ -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