1use serde::{Deserialize, Serialize};
2use serde_json::Value;
3
4#[derive(Debug, Clone, Serialize, Deserialize, Default)]
6#[serde(rename_all = "PascalCase")]
7pub struct Status {
8 pub state: Option<String>,
9 pub health: Option<String>,
10 pub health_rollup: Option<String>,
11}
12
13#[derive(Debug, Clone, Serialize, Deserialize)]
15#[serde(rename_all = "PascalCase")]
16pub struct ServiceRoot {
17 #[serde(rename = "@odata.id")]
18 pub odata_id: Option<String>,
19 pub id: Option<String>,
20 pub name: Option<String>,
21 pub redfish_version: Option<String>,
22 pub systems: Option<OdataLink>,
23 pub chassis: Option<OdataLink>,
24 pub managers: Option<OdataLink>,
25 pub session_service: Option<OdataLink>,
26 pub account_service: Option<OdataLink>,
27 pub update_service: Option<OdataLink>,
28 pub event_service: Option<OdataLink>,
29}
30
31#[derive(Debug, Clone, Serialize, Deserialize)]
33pub struct OdataLink {
34 #[serde(rename = "@odata.id")]
35 pub odata_id: String,
36}
37
38#[derive(Debug, Clone, Serialize, Deserialize)]
40#[serde(rename_all = "PascalCase")]
41pub struct Collection {
42 #[serde(rename = "@odata.id")]
43 pub odata_id: Option<String>,
44 pub name: Option<String>,
45 #[serde(rename = "Members@odata.count")]
46 pub members_count: Option<u32>,
47 #[serde(rename = "Members")]
48 pub members: Option<Vec<OdataLink>>,
49}
50
51#[derive(Debug, Clone, Serialize, Deserialize)]
53#[serde(rename_all = "PascalCase")]
54pub struct ComputerSystem {
55 #[serde(rename = "@odata.id")]
56 pub odata_id: Option<String>,
57 pub id: Option<String>,
58 pub name: Option<String>,
59 pub manufacturer: Option<String>,
60 pub model: Option<String>,
61 pub serial_number: Option<String>,
62 pub uuid: Option<String>,
63 pub host_name: Option<String>,
64 pub power_state: Option<String>,
65 pub bios_version: Option<String>,
66 pub status: Option<Status>,
67 pub boot: Option<Boot>,
68 pub processor_summary: Option<ProcessorSummary>,
69 pub memory_summary: Option<MemorySummary>,
70 pub processors: Option<OdataLink>,
71 pub memory: Option<OdataLink>,
72 pub storage: Option<OdataLink>,
73 pub ethernet_interfaces: Option<OdataLink>,
74 pub network_interfaces: Option<OdataLink>,
75 pub bios: Option<OdataLink>,
76}
77
78#[derive(Debug, Clone, Serialize, Deserialize)]
79#[serde(rename_all = "PascalCase")]
80pub struct Boot {
81 pub boot_source_override_target: Option<String>,
82 pub boot_source_override_enabled: Option<String>,
83 pub boot_source_override_mode: Option<String>,
84}
85
86#[derive(Debug, Clone, Serialize, Deserialize)]
87#[serde(rename_all = "PascalCase")]
88pub struct ProcessorSummary {
89 pub count: Option<u32>,
90 pub model: Option<String>,
91 pub status: Option<Status>,
92}
93
94#[derive(Debug, Clone, Serialize, Deserialize)]
95#[serde(rename_all = "PascalCase")]
96pub struct MemorySummary {
97 pub total_system_memory_gi_b: Option<f64>,
98 pub status: Option<Status>,
99}
100
101#[derive(Debug, Clone, Serialize, Deserialize)]
103#[serde(rename_all = "PascalCase")]
104pub struct Chassis {
105 #[serde(rename = "@odata.id")]
106 pub odata_id: Option<String>,
107 pub id: Option<String>,
108 pub name: Option<String>,
109 pub chassis_type: Option<String>,
110 pub manufacturer: Option<String>,
111 pub model: Option<String>,
112 pub serial_number: Option<String>,
113 pub part_number: Option<String>,
114 pub power_state: Option<String>,
115 pub status: Option<Status>,
116 pub thermal: Option<OdataLink>,
117 pub power: Option<OdataLink>,
118}
119
120#[derive(Debug, Clone, Serialize, Deserialize)]
122#[serde(rename_all = "PascalCase")]
123pub struct Manager {
124 #[serde(rename = "@odata.id")]
125 pub odata_id: Option<String>,
126 pub id: Option<String>,
127 pub name: Option<String>,
128 pub manager_type: Option<String>,
129 pub firmware_version: Option<String>,
130 pub status: Option<Status>,
131 pub ethernet_interfaces: Option<OdataLink>,
132 pub network_protocol: Option<OdataLink>,
133 pub log_services: Option<OdataLink>,
134}
135
136#[derive(Debug, Clone, Serialize, Deserialize)]
138#[serde(rename_all = "PascalCase")]
139pub struct Power {
140 #[serde(rename = "@odata.id")]
141 pub odata_id: Option<String>,
142 pub power_control: Option<Vec<PowerControl>>,
143 pub power_supplies: Option<Vec<PowerSupply>>,
144}
145
146#[derive(Debug, Clone, Serialize, Deserialize)]
147#[serde(rename_all = "PascalCase")]
148pub struct PowerControl {
149 pub name: Option<String>,
150 pub power_consumed_watts: Option<f64>,
151 pub power_capacity_watts: Option<f64>,
152}
153
154#[derive(Debug, Clone, Serialize, Deserialize)]
155#[serde(rename_all = "PascalCase")]
156pub struct PowerSupply {
157 pub name: Option<String>,
158 pub power_capacity_watts: Option<f64>,
159 pub model: Option<String>,
160 pub serial_number: Option<String>,
161 pub status: Option<Status>,
162}
163
164#[derive(Debug, Clone, Serialize, Deserialize)]
166#[serde(rename_all = "PascalCase")]
167pub struct Thermal {
168 #[serde(rename = "@odata.id")]
169 pub odata_id: Option<String>,
170 pub temperatures: Option<Vec<Temperature>>,
171 pub fans: Option<Vec<Fan>>,
172}
173
174#[derive(Debug, Clone, Serialize, Deserialize)]
175#[serde(rename_all = "PascalCase")]
176pub struct Temperature {
177 pub name: Option<String>,
178 pub reading_celsius: Option<f64>,
179 pub upper_threshold_critical: Option<f64>,
180 pub upper_threshold_fatal: Option<f64>,
181 pub status: Option<Status>,
182}
183
184#[derive(Debug, Clone, Serialize, Deserialize)]
185#[serde(rename_all = "PascalCase")]
186pub struct Fan {
187 pub name: Option<String>,
188 pub reading: Option<f64>,
189 pub reading_units: Option<String>,
190 pub status: Option<Status>,
191}
192
193#[derive(Debug, Clone, Serialize, Deserialize)]
195#[serde(rename_all = "PascalCase")]
196pub struct Processor {
197 #[serde(rename = "@odata.id")]
198 pub odata_id: Option<String>,
199 pub id: Option<String>,
200 pub name: Option<String>,
201 pub manufacturer: Option<String>,
202 pub model: Option<String>,
203 pub total_cores: Option<u32>,
204 pub total_threads: Option<u32>,
205 pub max_speed_m_hz: Option<u32>,
206 pub status: Option<Status>,
207}
208
209#[derive(Debug, Clone, Serialize, Deserialize)]
211#[serde(rename_all = "PascalCase")]
212pub struct Memory {
213 #[serde(rename = "@odata.id")]
214 pub odata_id: Option<String>,
215 pub id: Option<String>,
216 pub name: Option<String>,
217 pub memory_device_type: Option<String>,
218 pub capacity_mi_b: Option<u64>,
219 pub operating_speed_mhz: Option<u32>,
220 pub manufacturer: Option<String>,
221 pub serial_number: Option<String>,
222 pub status: Option<Status>,
223}
224
225#[derive(Debug, Clone, Serialize, Deserialize)]
227#[serde(rename_all = "PascalCase")]
228pub struct Storage {
229 #[serde(rename = "@odata.id")]
230 pub odata_id: Option<String>,
231 pub id: Option<String>,
232 pub name: Option<String>,
233 pub drives: Option<Vec<OdataLink>>,
234 pub storage_controllers: Option<Vec<StorageController>>,
235}
236
237#[derive(Debug, Clone, Serialize, Deserialize)]
238#[serde(rename_all = "PascalCase")]
239pub struct StorageController {
240 pub member_id: Option<String>,
241 pub name: Option<String>,
242 pub manufacturer: Option<String>,
243 pub model: Option<String>,
244 pub firmware_version: Option<String>,
245 pub status: Option<Status>,
246}
247
248#[derive(Debug, Clone, Serialize, Deserialize)]
250#[serde(rename_all = "PascalCase")]
251pub struct Drive {
252 #[serde(rename = "@odata.id")]
253 pub odata_id: Option<String>,
254 pub id: Option<String>,
255 pub name: Option<String>,
256 pub manufacturer: Option<String>,
257 pub model: Option<String>,
258 pub serial_number: Option<String>,
259 pub capacity_bytes: Option<u64>,
260 pub media_type: Option<String>,
261 pub protocol: Option<String>,
262 pub status: Option<Status>,
263}
264
265#[derive(Debug, Clone, Serialize, Deserialize)]
267#[serde(rename_all = "PascalCase")]
268pub struct EthernetInterface {
269 #[serde(rename = "@odata.id")]
270 pub odata_id: Option<String>,
271 pub id: Option<String>,
272 pub name: Option<String>,
273 #[serde(rename = "MACAddress")]
274 pub mac_address: Option<String>,
275 pub speed_mbps: Option<u32>,
276 pub status: Option<Status>,
277 #[serde(rename = "IPv4Addresses")]
278 pub ipv4_addresses: Option<Vec<Value>>,
279 #[serde(rename = "IPv6Addresses")]
280 pub ipv6_addresses: Option<Vec<Value>>,
281}
282
283#[derive(Debug, Clone, Serialize, Deserialize)]
285#[serde(rename_all = "PascalCase")]
286pub struct AccountService {
287 #[serde(rename = "@odata.id")]
288 pub odata_id: Option<String>,
289 pub accounts: Option<OdataLink>,
290 pub roles: Option<OdataLink>,
291}
292
293#[derive(Debug, Clone, Serialize, Deserialize)]
295#[serde(rename_all = "PascalCase")]
296pub struct Account {
297 #[serde(rename = "@odata.id")]
298 pub odata_id: Option<String>,
299 pub id: Option<String>,
300 pub name: Option<String>,
301 pub user_name: Option<String>,
302 pub role_id: Option<String>,
303 pub enabled: Option<bool>,
304 pub locked: Option<bool>,
305}
306
307#[derive(Debug, Clone, Serialize, Deserialize)]
309#[serde(rename_all = "PascalCase")]
310pub struct UpdateService {
311 #[serde(rename = "@odata.id")]
312 pub odata_id: Option<String>,
313 pub firmware_inventory: Option<OdataLink>,
314 pub software_inventory: Option<OdataLink>,
315 pub service_enabled: Option<bool>,
316}
317
318#[derive(Debug, Clone, Serialize, Deserialize)]
320#[serde(rename_all = "PascalCase")]
321pub struct EventService {
322 #[serde(rename = "@odata.id")]
323 pub odata_id: Option<String>,
324 pub service_enabled: Option<bool>,
325 pub subscriptions: Option<OdataLink>,
326}
327
328#[derive(Debug, Clone, Serialize, Deserialize)]
330#[serde(rename_all = "PascalCase")]
331pub struct LogEntry {
332 #[serde(rename = "@odata.id")]
333 pub odata_id: Option<String>,
334 pub id: Option<String>,
335 pub name: Option<String>,
336 pub created: Option<String>,
337 pub entry_type: Option<String>,
338 pub severity: Option<String>,
339 pub message: Option<String>,
340 pub message_id: Option<String>,
341}
342
343#[derive(Debug, Clone, Serialize, Deserialize)]
345#[serde(rename_all = "PascalCase")]
346pub struct Task {
347 #[serde(rename = "@odata.id")]
348 pub odata_id: Option<String>,
349 pub id: Option<String>,
350 pub name: Option<String>,
351 pub task_state: Option<String>,
352 pub start_time: Option<String>,
353 pub end_time: Option<String>,
354 pub task_status: Option<String>,
355}
356
357#[derive(Debug, Serialize)]
359#[serde(rename_all = "PascalCase")]
360pub struct SessionCreate {
361 pub user_name: String,
362 pub password: String,
363}
364
365#[derive(Debug, Serialize)]
367#[serde(rename_all = "PascalCase")]
368pub struct ResetRequest {
369 pub reset_type: String,
370}
371
372#[derive(Debug, Serialize)]
374#[serde(rename_all = "PascalCase")]
375pub struct BootOverride {
376 pub boot: BootOverrideInner,
377}
378
379#[derive(Debug, Serialize)]
380#[serde(rename_all = "PascalCase")]
381pub struct BootOverrideInner {
382 pub boot_source_override_target: String,
383 pub boot_source_override_enabled: Option<String>,
384}
385
386#[derive(Debug, Clone, Serialize, Deserialize)]
388#[serde(rename_all = "PascalCase")]
389pub struct VirtualMedia {
390 #[serde(rename = "@odata.id")]
391 pub odata_id: Option<String>,
392 pub id: Option<String>,
393 pub name: Option<String>,
394 pub media_types: Option<Vec<String>>,
395 pub image: Option<String>,
396 pub image_name: Option<String>,
397 pub inserted: Option<bool>,
398 pub connected_via: Option<String>,
399 pub write_protected: Option<bool>,
400}
401
402#[derive(Debug, Clone, Serialize, Deserialize)]
404#[serde(rename_all = "PascalCase")]
405pub struct Bios {
406 #[serde(rename = "@odata.id")]
407 pub odata_id: Option<String>,
408 pub id: Option<String>,
409 pub name: Option<String>,
410 pub attributes: Option<serde_json::Value>,
411}
412
413#[derive(Debug, Clone, Serialize, Deserialize)]
415#[serde(rename_all = "PascalCase")]
416pub struct NetworkProtocol {
417 #[serde(rename = "@odata.id")]
418 pub odata_id: Option<String>,
419 pub host_name: Option<String>,
420 #[serde(rename = "FQDN")]
421 pub fqdn: Option<String>,
422 #[serde(rename = "HTTP")]
423 pub http: Option<ProtocolEnabled>,
424 #[serde(rename = "HTTPS")]
425 pub https: Option<ProtocolEnabled>,
426 #[serde(rename = "SSH")]
427 pub ssh: Option<ProtocolEnabled>,
428 #[serde(rename = "IPMI")]
429 pub ipmi: Option<ProtocolEnabled>,
430 #[serde(rename = "KVMIP")]
431 pub kvmip: Option<ProtocolEnabled>,
432 #[serde(rename = "NTP")]
433 pub ntp: Option<NtpProtocol>,
434}
435
436#[derive(Debug, Clone, Serialize, Deserialize)]
437#[serde(rename_all = "PascalCase")]
438pub struct ProtocolEnabled {
439 pub protocol_enabled: Option<bool>,
440 pub port: Option<u16>,
441}
442
443#[derive(Debug, Clone, Serialize, Deserialize)]
444#[serde(rename_all = "PascalCase")]
445pub struct NtpProtocol {
446 pub protocol_enabled: Option<bool>,
447 #[serde(rename = "NTPServers")]
448 pub ntp_servers: Option<Vec<String>>,
449}
450
451#[derive(Debug, Clone, Serialize, Deserialize)]
453#[serde(rename_all = "PascalCase")]
454pub struct SecureBoot {
455 #[serde(rename = "@odata.id")]
456 pub odata_id: Option<String>,
457 pub secure_boot_enable: Option<bool>,
458 pub secure_boot_current_boot: Option<String>,
459 pub secure_boot_mode: Option<String>,
460}
461
462#[derive(Debug, Clone, Serialize, Deserialize)]
464#[serde(rename_all = "PascalCase")]
465pub struct Volume {
466 #[serde(rename = "@odata.id")]
467 pub odata_id: Option<String>,
468 pub id: Option<String>,
469 pub name: Option<String>,
470 pub capacity_bytes: Option<u64>,
471 pub volume_type: Option<String>,
472 #[serde(rename = "RAIDType")]
473 pub raid_type: Option<String>,
474 pub status: Option<Status>,
475 pub drives: Option<Vec<OdataLink>>,
476}
477
478#[derive(Debug, Clone, Serialize, Deserialize)]
480#[serde(rename_all = "PascalCase")]
481pub struct Certificate {
482 #[serde(rename = "@odata.id")]
483 pub odata_id: Option<String>,
484 pub id: Option<String>,
485 pub certificate_string: Option<String>,
486 pub certificate_type: Option<String>,
487 pub issuer: Option<serde_json::Value>,
488 pub subject: Option<serde_json::Value>,
489 pub valid_not_before: Option<String>,
490 pub valid_not_after: Option<String>,
491}
492
493#[derive(Debug, Clone, Serialize, Deserialize)]
495#[serde(rename_all = "PascalCase")]
496pub struct EventDestination {
497 #[serde(rename = "@odata.id")]
498 pub odata_id: Option<String>,
499 pub id: Option<String>,
500 pub destination: Option<String>,
501 pub protocol: Option<String>,
502 pub event_types: Option<Vec<String>>,
503 pub context: Option<String>,
504}
505
506#[derive(Debug, Clone, Serialize, Deserialize)]
508#[serde(rename_all = "PascalCase")]
509pub struct SerialInterface {
510 #[serde(rename = "@odata.id")]
511 pub odata_id: Option<String>,
512 pub id: Option<String>,
513 pub bit_rate: Option<String>,
514 pub data_bits: Option<String>,
515 pub parity: Option<String>,
516 pub stop_bits: Option<String>,
517 pub flow_control: Option<String>,
518 pub interface_enabled: Option<bool>,
519}
520
521#[derive(Debug, Clone, Serialize, Deserialize)]
523#[serde(rename_all = "PascalCase")]
524pub struct SoftwareInventory {
525 #[serde(rename = "@odata.id")]
526 pub odata_id: Option<String>,
527 pub id: Option<String>,
528 pub name: Option<String>,
529 pub version: Option<String>,
530 pub updateable: Option<bool>,
531 pub status: Option<Status>,
532}