list_modules/
list_modules.rs1use fmd_adm::{FmdAdm, NvValue};
2
3fn main() {
4 let adm = FmdAdm::open().expect("failed to open fmd adm handle");
5
6 println!("=== FMD Modules ===");
7 let modules = adm.modules().expect("failed to list modules");
8 for m in &modules {
9 println!(
10 " {} v{} - {}{}",
11 m.name,
12 m.version,
13 m.description,
14 if m.failed { " [FAILED]" } else { "" },
15 );
16 }
17 println!("({} modules total)", modules.len());
18
19 println!("\n=== Faulty Resources ===");
20 let resources = adm.resources(true).expect("failed to list resources");
21 if resources.is_empty() {
22 println!(" (none)");
23 } else {
24 for r in &resources {
25 println!(" {} (case {})", r.fmri, r.uuid);
26 }
27 }
28
29 println!("\n=== Cases ===");
30 let cases = adm.cases(None).expect("failed to list cases");
31 if cases.is_empty() {
32 println!(" (none)");
33 } else {
34 for c in &cases {
35 let severity = c
36 .event
37 .as_ref()
38 .and_then(|e| e.lookup("severity"))
39 .and_then(|v| match v {
40 NvValue::String(s) => Some(s.as_str()),
41 _ => None,
42 })
43 .unwrap_or("unknown");
44 println!(" {} - {} (severity: {})", c.uuid, c.code, severity);
45 }
46 }
47}