X-Git-Url: http://git.annexia.org/?a=blobdiff_plain;f=examples%2Flist_domains.ml;h=87ccd8c4ff439454a5bf98baa8d92a58249cc137;hb=c338d3194fb5969c927ece7d4fd09569d54b203b;hp=c97432c0938e7fff57f8c7fc9acd3bdf66ac8169;hpb=9b1c8e53eaa6fb79ee801e3014793618b977857d;p=ocaml-libvirt.git diff --git a/examples/list_domains.ml b/examples/list_domains.ml index c97432c..87ccd8c 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 = @@ -17,24 +26,20 @@ let () = Some (Sys.argv.(1)) else None in - let conn = C.connect_readonly ?name () in - - (* List running domains. *) - let n = C.num_of_domains conn in - let ids = C.list_domains conn n in - let domains = Array.map (D.lookup_by_id conn) ids in - Array.iter ( - fun dom -> - printf "%8d %s\n%!" (D.get_id dom) (D.get_name dom) - ) domains; + let conn = C.connect_auth_readonly ?name (C.get_auth_default ()) in - (* List inactive domains. *) - let n = C.num_of_defined_domains conn in - let names = C.list_defined_domains conn n in - Array.iter ( - fun name -> - printf "inactive %s\n%!" name - ) names; + (* List all domains (running and inactive). *) + let domains = D.get_domains_and_infos conn [D.ListAll] in + List.iter ( + 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)