X-Git-Url: http://git.annexia.org/?a=blobdiff_plain;f=examples%2Flist_domains.ml;h=5cd93c7398508a66830f90ba52cb5b1fb5eae3c0;hb=9d178cbfeb709d2d2fbddb9fcab88e9204c8f995;hp=c97432c0938e7fff57f8c7fc9acd3bdf66ac8169;hpb=9b1c8e53eaa6fb79ee801e3014793618b977857d;p=ocaml-libvirt.git diff --git a/examples/list_domains.ml b/examples/list_domains.ml index c97432c..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,22 +28,18 @@ let () = 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; - - (* 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)