1#[derive(Clone, Debug, PartialEq, Default, Serialize, Deserialize)]
14pub struct Device {
15 #[serde(rename = "id", skip_serializing_if = "Option::is_none")]
16 pub id: Option<i32>,
17 #[serde(rename = "url", skip_serializing_if = "Option::is_none")]
18 pub url: Option<String>,
19 #[serde(rename = "display_url", skip_serializing_if = "Option::is_none")]
20 pub display_url: Option<String>,
21 #[serde(rename = "display", skip_serializing_if = "Option::is_none")]
22 pub display: Option<String>,
23 #[serde(
24 rename = "name",
25 default,
26 with = "::serde_with::rust::double_option",
27 skip_serializing_if = "Option::is_none"
28 )]
29 pub name: Option<Option<String>>,
30 #[serde(rename = "device_type")]
31 pub device_type: Box<crate::models::BriefDeviceType>,
32 #[serde(rename = "role")]
33 pub role: Box<crate::models::BriefDeviceRole>,
34 #[serde(
35 rename = "tenant",
36 default,
37 with = "::serde_with::rust::double_option",
38 skip_serializing_if = "Option::is_none"
39 )]
40 pub tenant: Option<Option<Box<crate::models::BriefTenant>>>,
41 #[serde(
42 rename = "platform",
43 default,
44 with = "::serde_with::rust::double_option",
45 skip_serializing_if = "Option::is_none"
46 )]
47 pub platform: Option<Option<Box<crate::models::BriefPlatform>>>,
48 #[serde(rename = "serial", skip_serializing_if = "Option::is_none")]
50 pub serial: Option<String>,
51 #[serde(
53 rename = "asset_tag",
54 default,
55 with = "::serde_with::rust::double_option",
56 skip_serializing_if = "Option::is_none"
57 )]
58 pub asset_tag: Option<Option<String>>,
59 #[serde(rename = "site")]
60 pub site: Box<crate::models::BriefSite>,
61 #[serde(
62 rename = "location",
63 default,
64 with = "::serde_with::rust::double_option",
65 skip_serializing_if = "Option::is_none"
66 )]
67 pub location: Option<Option<Box<crate::models::BriefLocation>>>,
68 #[serde(
69 rename = "rack",
70 default,
71 with = "::serde_with::rust::double_option",
72 skip_serializing_if = "Option::is_none"
73 )]
74 pub rack: Option<Option<Box<crate::models::BriefRack>>>,
75 #[serde(
76 rename = "position",
77 default,
78 with = "::serde_with::rust::double_option",
79 skip_serializing_if = "Option::is_none"
80 )]
81 pub position: Option<Option<f64>>,
82 #[serde(rename = "face", skip_serializing_if = "Option::is_none")]
83 pub face: Option<Box<crate::models::DeviceFace>>,
84 #[serde(
86 rename = "latitude",
87 default,
88 with = "::serde_with::rust::double_option",
89 skip_serializing_if = "Option::is_none"
90 )]
91 pub latitude: Option<Option<f64>>,
92 #[serde(
94 rename = "longitude",
95 default,
96 with = "::serde_with::rust::double_option",
97 skip_serializing_if = "Option::is_none"
98 )]
99 pub longitude: Option<Option<f64>>,
100 #[serde(
101 rename = "parent_device",
102 default,
103 with = "::serde_with::rust::double_option",
104 skip_serializing_if = "Option::is_none"
105 )]
106 pub parent_device: Option<Option<Box<crate::models::NestedDevice>>>,
107 #[serde(rename = "status", skip_serializing_if = "Option::is_none")]
108 pub status: Option<Box<crate::models::DeviceStatus>>,
109 #[serde(rename = "airflow", skip_serializing_if = "Option::is_none")]
110 pub airflow: Option<Box<crate::models::DeviceAirflow>>,
111 #[serde(
112 rename = "primary_ip",
113 default,
114 with = "::serde_with::rust::double_option",
115 skip_serializing_if = "Option::is_none"
116 )]
117 pub primary_ip: Option<Option<Box<crate::models::BriefIpAddress>>>,
118 #[serde(
119 rename = "primary_ip4",
120 default,
121 with = "::serde_with::rust::double_option",
122 skip_serializing_if = "Option::is_none"
123 )]
124 pub primary_ip4: Option<Option<Box<crate::models::BriefIpAddress>>>,
125 #[serde(
126 rename = "primary_ip6",
127 default,
128 with = "::serde_with::rust::double_option",
129 skip_serializing_if = "Option::is_none"
130 )]
131 pub primary_ip6: Option<Option<Box<crate::models::BriefIpAddress>>>,
132 #[serde(
133 rename = "oob_ip",
134 default,
135 with = "::serde_with::rust::double_option",
136 skip_serializing_if = "Option::is_none"
137 )]
138 pub oob_ip: Option<Option<Box<crate::models::BriefIpAddress>>>,
139 #[serde(
140 rename = "cluster",
141 default,
142 with = "::serde_with::rust::double_option",
143 skip_serializing_if = "Option::is_none"
144 )]
145 pub cluster: Option<Option<Box<crate::models::BriefCluster>>>,
146 #[serde(
147 rename = "virtual_chassis",
148 default,
149 with = "::serde_with::rust::double_option",
150 skip_serializing_if = "Option::is_none"
151 )]
152 pub virtual_chassis: Option<Option<Box<crate::models::BriefVirtualChassis>>>,
153 #[serde(
154 rename = "vc_position",
155 default,
156 with = "::serde_with::rust::double_option",
157 skip_serializing_if = "Option::is_none"
158 )]
159 pub vc_position: Option<Option<i32>>,
160 #[serde(
162 rename = "vc_priority",
163 default,
164 with = "::serde_with::rust::double_option",
165 skip_serializing_if = "Option::is_none"
166 )]
167 pub vc_priority: Option<Option<i32>>,
168 #[serde(rename = "description", skip_serializing_if = "Option::is_none")]
169 pub description: Option<String>,
170 #[serde(rename = "comments", skip_serializing_if = "Option::is_none")]
171 pub comments: Option<String>,
172 #[serde(
173 rename = "config_template",
174 default,
175 with = "::serde_with::rust::double_option",
176 skip_serializing_if = "Option::is_none"
177 )]
178 pub config_template: Option<Option<Box<crate::models::BriefConfigTemplate>>>,
179 #[serde(
181 rename = "local_context_data",
182 default,
183 with = "::serde_with::rust::double_option",
184 skip_serializing_if = "Option::is_none"
185 )]
186 pub local_context_data: Option<Option<serde_json::Value>>,
187 #[serde(rename = "tags", skip_serializing_if = "Option::is_none")]
188 pub tags: Option<Vec<crate::models::NestedTag>>,
189 #[serde(rename = "custom_fields", skip_serializing_if = "Option::is_none")]
190 pub custom_fields: Option<::std::collections::HashMap<String, serde_json::Value>>,
191 #[serde(
192 rename = "created",
193 default,
194 with = "::serde_with::rust::double_option",
195 skip_serializing_if = "Option::is_none"
196 )]
197 pub created: Option<Option<String>>,
198 #[serde(
199 rename = "last_updated",
200 default,
201 with = "::serde_with::rust::double_option",
202 skip_serializing_if = "Option::is_none"
203 )]
204 pub last_updated: Option<Option<String>>,
205 #[serde(rename = "console_port_count", skip_serializing_if = "Option::is_none")]
206 pub console_port_count: Option<i32>,
207 #[serde(
208 rename = "console_server_port_count",
209 skip_serializing_if = "Option::is_none"
210 )]
211 pub console_server_port_count: Option<i32>,
212 #[serde(rename = "power_port_count", skip_serializing_if = "Option::is_none")]
213 pub power_port_count: Option<i32>,
214 #[serde(rename = "power_outlet_count", skip_serializing_if = "Option::is_none")]
215 pub power_outlet_count: Option<i32>,
216 #[serde(rename = "interface_count", skip_serializing_if = "Option::is_none")]
217 pub interface_count: Option<i32>,
218 #[serde(rename = "front_port_count", skip_serializing_if = "Option::is_none")]
219 pub front_port_count: Option<i32>,
220 #[serde(rename = "rear_port_count", skip_serializing_if = "Option::is_none")]
221 pub rear_port_count: Option<i32>,
222 #[serde(rename = "device_bay_count", skip_serializing_if = "Option::is_none")]
223 pub device_bay_count: Option<i32>,
224 #[serde(rename = "module_bay_count", skip_serializing_if = "Option::is_none")]
225 pub module_bay_count: Option<i32>,
226 #[serde(
227 rename = "inventory_item_count",
228 skip_serializing_if = "Option::is_none"
229 )]
230 pub inventory_item_count: Option<i32>,
231}
232
233impl Device {
234 pub fn new(
236 device_type: crate::models::BriefDeviceType,
237 role: crate::models::BriefDeviceRole,
238 site: crate::models::BriefSite,
239 ) -> Device {
240 Device {
241 id: None,
242 url: None,
243 display_url: None,
244 display: None,
245 name: None,
246 device_type: Box::new(device_type),
247 role: Box::new(role),
248 tenant: None,
249 platform: None,
250 serial: None,
251 asset_tag: None,
252 site: Box::new(site),
253 location: None,
254 rack: None,
255 position: None,
256 face: None,
257 latitude: None,
258 longitude: None,
259 parent_device: None,
260 status: None,
261 airflow: None,
262 primary_ip: None,
263 primary_ip4: None,
264 primary_ip6: None,
265 oob_ip: None,
266 cluster: None,
267 virtual_chassis: None,
268 vc_position: None,
269 vc_priority: None,
270 description: None,
271 comments: None,
272 config_template: None,
273 local_context_data: None,
274 tags: None,
275 custom_fields: None,
276 created: None,
277 last_updated: None,
278 console_port_count: None,
279 console_server_port_count: None,
280 power_port_count: None,
281 power_outlet_count: None,
282 interface_count: None,
283 front_port_count: None,
284 rear_port_count: None,
285 device_bay_count: None,
286 module_bay_count: None,
287 inventory_item_count: None,
288 }
289 }
290}