X-Git-Url: http://git.annexia.org/?a=blobdiff_plain;f=examples%2Flist_domains.ml;h=5cd93c7398508a66830f90ba52cb5b1fb5eae3c0;hb=252568550f9bf28b07f4e6d116485205e58afe4a;hp=2e9e43673032bfd52916e15637cf545b7e768728;hpb=4d988dada41d62c5f40a24c69220184ff6b079e0;p=ocaml-libvirt.git diff --git a/examples/list_domains.ml b/examples/list_domains.ml index 2e9e436..5cd93c7 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,18 @@ 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) -> + let id = D.get_id dom in + let name = D.get_name dom in + let state = string_of_state info.D.state in + if id >= 0 then + printf "%8d %-20s %s\n%!" id name state + else + printf "%8s %-20s %s\n%!" "inactive" name state + ) domains with Libvirt.Virterror err -> eprintf "error: %s\n" (Libvirt.Virterror.to_string err)