Skip to main content

case_detail/
case_detail.rs

1use fmd_adm::{FmdAdm, NvList, NvValue};
2
3fn print_nvlist(nvl: &NvList, indent: usize) {
4    let pad = "  ".repeat(indent);
5    for (name, value) in nvl {
6        match value {
7            NvValue::NvList(inner) => {
8                println!("{pad}{name} = (embedded nvlist)");
9                print_nvlist(inner, indent + 1);
10            }
11            NvValue::NvListArray(arr) => {
12                println!("{pad}{name} = (array of {} nvlists)", arr.len());
13                for (i, inner) in arr.iter().enumerate() {
14                    println!("{pad}  [{i}]:");
15                    print_nvlist(inner, indent + 2);
16                }
17            }
18            other => {
19                println!("{pad}{name} = {other:?}");
20            }
21        }
22    }
23}
24
25fn main() {
26    let adm = FmdAdm::open().expect("failed to open fmd adm handle");
27    let cases = adm.cases(None).expect("failed to list cases");
28
29    if let Some(c) = cases.first() {
30        println!("Case {} ({})\n", c.uuid, c.code);
31        if let Some(event) = &c.event {
32            print_nvlist(event, 0);
33        } else {
34            println!("  (no event data)");
35        }
36    } else {
37        println!("No cases found.");
38    }
39}