X-Git-Url: http://git.annexia.org/?p=ocaml-libvirt.git;a=blobdiff_plain;f=examples%2Flist_domains.ml;h=6b049323427a99081843e9bf5d4622fd67f51375;hp=2e9e43673032bfd52916e15637cf545b7e768728;hb=40a01d1ac4c73496e06944fc1910694908f3442d;hpb=4d988dada41d62c5f40a24c69220184ff6b079e0 diff --git a/examples/list_domains.ml b/examples/list_domains.ml index 2e9e436..6b04932 100644 --- a/examples/list_domains.ml +++ b/examples/list_domains.ml @@ -10,6 +10,15 @@ module C = Libvirt.Connect module D = Libvirt.Domain module N = Libvirt.Network +let string_of_state = function + | D.InfoNoState -> "no state" + | D.InfoRunning -> "running" + | D.InfoBlocked -> "blocked" + | D.InfoPaused -> "paused" + | D.InfoShutdown -> "shutdown" + | D.InfoShutoff -> "shutoff" + | D.InfoCrashed -> "crashed" + let () = try let name = @@ -19,21 +28,16 @@ let () = None in let conn = C.connect_readonly ?name () in - (* List running domains. *) - let domains = - fst (Libvirt.get_domains conn ~want_info:false [D.ListActive]) in - List.iter ( - fun dom -> - printf "%8d %s\n%!" (D.get_id dom) (D.get_name dom) - ) domains; - - (* List inactive domains. *) - let domains = - fst (Libvirt.get_domains conn ~want_info:false [D.ListInactive]) in + (* List all domains (running and inactive). *) + let domains = D.get_domains_and_infos conn [D.ListAll] in List.iter ( - fun dom -> - printf "inactive %s\n%!" (D.get_name dom) - ) domains; + fun (dom, info) -> + if info.D.state <> D.InfoShutoff then + printf "%8d %-20s %s\n%!" + (D.get_id dom) (D.get_name dom) (string_of_state info.D.state) + else + printf "%8s %-20s shutoff\n%!" "" (D.get_name dom) + ) domains with Libvirt.Virterror err -> eprintf "error: %s\n" (Libvirt.Virterror.to_string err)