1#[derive(Clone, Debug, PartialEq, Default, Serialize, Deserialize)]
14pub struct WritableDeviceWithConfigContextRequest {
15 #[serde(
16 rename = "name",
17 default,
18 with = "::serde_with::rust::double_option",
19 skip_serializing_if = "Option::is_none"
20 )]
21 pub name: Option<Option<String>>,
22 #[serde(rename = "device_type")]
23 pub device_type: Box<crate::models::BulkDeviceBayTemplateRequestDeviceType>,
24 #[serde(rename = "role")]
25 pub role: Box<crate::models::BulkDeviceWithConfigContextRequestRole>,
26 #[serde(
27 rename = "tenant",
28 default,
29 with = "::serde_with::rust::double_option",
30 skip_serializing_if = "Option::is_none"
31 )]
32 pub tenant: Option<Option<Box<crate::models::AsnRangeRequestTenant>>>,
33 #[serde(
34 rename = "platform",
35 default,
36 with = "::serde_with::rust::double_option",
37 skip_serializing_if = "Option::is_none"
38 )]
39 pub platform: Option<Option<Box<crate::models::BulkDeviceTypeRequestDefaultPlatform>>>,
40 #[serde(rename = "serial", skip_serializing_if = "Option::is_none")]
42 pub serial: Option<String>,
43 #[serde(
45 rename = "asset_tag",
46 default,
47 with = "::serde_with::rust::double_option",
48 skip_serializing_if = "Option::is_none"
49 )]
50 pub asset_tag: Option<Option<String>>,
51 #[serde(rename = "site")]
52 pub site: Box<crate::models::BulkDeviceWithConfigContextRequestSite>,
53 #[serde(
54 rename = "location",
55 default,
56 with = "::serde_with::rust::double_option",
57 skip_serializing_if = "Option::is_none"
58 )]
59 pub location: Option<Option<Box<crate::models::BulkDeviceWithConfigContextRequestLocation>>>,
60 #[serde(
61 rename = "rack",
62 default,
63 with = "::serde_with::rust::double_option",
64 skip_serializing_if = "Option::is_none"
65 )]
66 pub rack: Option<Option<Box<crate::models::BulkDeviceWithConfigContextRequestRack>>>,
67 #[serde(
68 rename = "position",
69 default,
70 with = "::serde_with::rust::double_option",
71 skip_serializing_if = "Option::is_none"
72 )]
73 pub position: Option<Option<f64>>,
74 #[serde(
76 rename = "face",
77 default,
78 with = "::serde_with::rust::double_option",
79 skip_serializing_if = "Option::is_none"
80 )]
81 pub face: Option<Option<Face>>,
82 #[serde(
84 rename = "latitude",
85 default,
86 with = "::serde_with::rust::double_option",
87 skip_serializing_if = "Option::is_none"
88 )]
89 pub latitude: Option<Option<f64>>,
90 #[serde(
92 rename = "longitude",
93 default,
94 with = "::serde_with::rust::double_option",
95 skip_serializing_if = "Option::is_none"
96 )]
97 pub longitude: Option<Option<f64>>,
98 #[serde(rename = "status", skip_serializing_if = "Option::is_none")]
100 pub status: Option<Status>,
101 #[serde(
103 rename = "airflow",
104 default,
105 with = "::serde_with::rust::double_option",
106 skip_serializing_if = "Option::is_none"
107 )]
108 pub airflow: Option<Option<Airflow>>,
109 #[serde(
110 rename = "primary_ip4",
111 default,
112 with = "::serde_with::rust::double_option",
113 skip_serializing_if = "Option::is_none"
114 )]
115 pub primary_ip4:
116 Option<Option<Box<crate::models::BulkDeviceWithConfigContextRequestPrimaryIp4>>>,
117 #[serde(
118 rename = "primary_ip6",
119 default,
120 with = "::serde_with::rust::double_option",
121 skip_serializing_if = "Option::is_none"
122 )]
123 pub primary_ip6:
124 Option<Option<Box<crate::models::BulkDeviceWithConfigContextRequestPrimaryIp4>>>,
125 #[serde(
126 rename = "oob_ip",
127 default,
128 with = "::serde_with::rust::double_option",
129 skip_serializing_if = "Option::is_none"
130 )]
131 pub oob_ip: Option<Option<Box<crate::models::BulkDeviceWithConfigContextRequestPrimaryIp4>>>,
132 #[serde(
133 rename = "cluster",
134 default,
135 with = "::serde_with::rust::double_option",
136 skip_serializing_if = "Option::is_none"
137 )]
138 pub cluster: Option<Option<Box<crate::models::BulkDeviceWithConfigContextRequestCluster>>>,
139 #[serde(
140 rename = "virtual_chassis",
141 default,
142 with = "::serde_with::rust::double_option",
143 skip_serializing_if = "Option::is_none"
144 )]
145 pub virtual_chassis:
146 Option<Option<Box<crate::models::BulkDeviceWithConfigContextRequestVirtualChassis>>>,
147 #[serde(
148 rename = "vc_position",
149 default,
150 with = "::serde_with::rust::double_option",
151 skip_serializing_if = "Option::is_none"
152 )]
153 pub vc_position: Option<Option<i32>>,
154 #[serde(
156 rename = "vc_priority",
157 default,
158 with = "::serde_with::rust::double_option",
159 skip_serializing_if = "Option::is_none"
160 )]
161 pub vc_priority: Option<Option<i32>>,
162 #[serde(rename = "description", skip_serializing_if = "Option::is_none")]
163 pub description: Option<String>,
164 #[serde(
165 rename = "owner",
166 default,
167 with = "::serde_with::rust::double_option",
168 skip_serializing_if = "Option::is_none"
169 )]
170 pub owner: Option<Option<Box<crate::models::AsnRangeRequestOwner>>>,
171 #[serde(rename = "comments", skip_serializing_if = "Option::is_none")]
172 pub comments: Option<String>,
173 #[serde(
174 rename = "config_template",
175 default,
176 with = "::serde_with::rust::double_option",
177 skip_serializing_if = "Option::is_none"
178 )]
179 pub config_template: Option<Option<Box<crate::models::BulkDeviceRoleRequestConfigTemplate>>>,
180 #[serde(
182 rename = "local_context_data",
183 default,
184 with = "::serde_with::rust::double_option",
185 skip_serializing_if = "Option::is_none"
186 )]
187 pub local_context_data: Option<Option<serde_json::Value>>,
188 #[serde(rename = "tags", skip_serializing_if = "Option::is_none")]
189 pub tags: Option<Vec<crate::models::NestedTagRequest>>,
190 #[serde(rename = "custom_fields", skip_serializing_if = "Option::is_none")]
191 pub custom_fields: Option<::std::collections::HashMap<String, serde_json::Value>>,
192}
193
194impl WritableDeviceWithConfigContextRequest {
195 pub fn new(
197 device_type: crate::models::BulkDeviceBayTemplateRequestDeviceType,
198 role: crate::models::BulkDeviceWithConfigContextRequestRole,
199 site: crate::models::BulkDeviceWithConfigContextRequestSite,
200 ) -> WritableDeviceWithConfigContextRequest {
201 WritableDeviceWithConfigContextRequest {
202 name: None,
203 device_type: Box::new(device_type),
204 role: Box::new(role),
205 tenant: None,
206 platform: None,
207 serial: None,
208 asset_tag: None,
209 site: Box::new(site),
210 location: None,
211 rack: None,
212 position: None,
213 face: None,
214 latitude: None,
215 longitude: None,
216 status: None,
217 airflow: None,
218 primary_ip4: None,
219 primary_ip6: None,
220 oob_ip: None,
221 cluster: None,
222 virtual_chassis: None,
223 vc_position: None,
224 vc_priority: None,
225 description: None,
226 owner: None,
227 comments: None,
228 config_template: None,
229 local_context_data: None,
230 tags: None,
231 custom_fields: None,
232 }
233 }
234}
235
236#[derive(Clone, Copy, Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Serialize, Deserialize)]
238pub enum Face {
239 #[serde(rename = "front")]
240 Front,
241 #[serde(rename = "rear")]
242 Rear,
243 #[serde(rename = "")]
244 Empty,
245 #[serde(rename = "null")]
246 Null,
247}
248
249impl Default for Face {
250 fn default() -> Face {
251 Self::Front
252 }
253}
254#[derive(Clone, Copy, Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Serialize, Deserialize)]
256pub enum Status {
257 #[serde(rename = "offline")]
258 Offline,
259 #[serde(rename = "active")]
260 Active,
261 #[serde(rename = "planned")]
262 Planned,
263 #[serde(rename = "staged")]
264 Staged,
265 #[serde(rename = "failed")]
266 Failed,
267 #[serde(rename = "inventory")]
268 Inventory,
269 #[serde(rename = "decommissioning")]
270 Decommissioning,
271}
272
273impl Default for Status {
274 fn default() -> Status {
275 Self::Offline
276 }
277}
278#[derive(Clone, Copy, Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Serialize, Deserialize)]
280pub enum Airflow {
281 #[serde(rename = "front-to-rear")]
282 FrontToRear,
283 #[serde(rename = "rear-to-front")]
284 RearToFront,
285 #[serde(rename = "left-to-right")]
286 LeftToRight,
287 #[serde(rename = "right-to-left")]
288 RightToLeft,
289 #[serde(rename = "side-to-rear")]
290 SideToRear,
291 #[serde(rename = "rear-to-side")]
292 RearToSide,
293 #[serde(rename = "bottom-to-top")]
294 BottomToTop,
295 #[serde(rename = "top-to-bottom")]
296 TopToBottom,
297 #[serde(rename = "passive")]
298 Passive,
299 #[serde(rename = "mixed")]
300 Mixed,
301 #[serde(rename = "")]
302 Empty,
303 #[serde(rename = "null")]
304 Null,
305}
306
307impl Default for Airflow {
308 fn default() -> Airflow {
309 Self::FrontToRear
310 }
311}