X-Git-Url: http://git.annexia.org/?a=blobdiff_plain;ds=sidebyside;f=examples%2Flist_domains.ml;h=87ccd8c4ff439454a5bf98baa8d92a58249cc137;hb=c338d3194fb5969c927ece7d4fd09569d54b203b;hp=2e9e43673032bfd52916e15637cf545b7e768728;hpb=4d988dada41d62c5f40a24c69220184ff6b079e0;p=ocaml-libvirt.git diff --git a/examples/list_domains.ml b/examples/list_domains.ml index 2e9e436..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,23 +26,20 @@ let () = Some (Sys.argv.(1)) else 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; + let conn = C.connect_auth_readonly ?name (C.get_auth_default ()) in - (* 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)