Add support for virConnectListAllDomains call.
[ocaml-libvirt.git] / examples / list_domains.ml
1 (* Simple demo program showing how to list out domains.
2    Usage: list_domains [URI]
3    (C) Copyright 2007 Richard W.M. Jones, Red Hat Inc.
4    http://libvirt.org/
5  *)
6
7 open Printf
8
9 module C = Libvirt.Connect
10 module D = Libvirt.Domain
11 module N = Libvirt.Network
12
13 let () =
14   try
15     let name =
16       if Array.length Sys.argv >= 2 then
17         Some (Sys.argv.(1))
18       else
19         None in
20     let conn = C.connect_readonly ?name () in
21
22     (* List running domains. *)
23     let domains =
24       fst (Libvirt.get_domains conn ~want_info:false [D.ListActive]) in
25     List.iter (
26       fun dom ->
27         printf "%8d %s\n%!" (D.get_id dom) (D.get_name dom)
28     ) domains;
29
30     (* List inactive domains. *)
31     let domains =
32       fst (Libvirt.get_domains conn ~want_info:false [D.ListInactive]) in
33     List.iter (
34       fun dom ->
35         printf "inactive %s\n%!" (D.get_name dom)
36     ) domains;
37   with
38     Libvirt.Virterror err ->
39       eprintf "error: %s\n" (Libvirt.Virterror.to_string err)
40
41 let () =
42   (* Run the garbage collector which is a good way to check for
43    * memory corruption errors and reference counting issues in libvirt.
44    *)
45   Gc.compact ()