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.
9 module C = Libvirt.Connect
10 module D = Libvirt.Domain
11 module N = Libvirt.Network
13 let string_of_state = function
14 | D.InfoNoState -> "no state"
15 | D.InfoRunning -> "running"
16 | D.InfoBlocked -> "blocked"
17 | D.InfoPaused -> "paused"
18 | D.InfoShutdown -> "shutdown"
19 | D.InfoShutoff -> "shutoff"
20 | D.InfoCrashed -> "crashed"
21 | D.InfoPMSuspended -> "pm suspended"
26 if Array.length Sys.argv >= 2 then
30 let conn = C.connect_auth_readonly ?name (C.get_auth_default ()) in
32 (* List all domains (running and inactive). *)
33 let domains = D.get_domains_and_infos conn [D.ListAll] in
36 let id = D.get_id dom in
37 let name = D.get_name dom in
38 let state = string_of_state info.D.state in
40 printf "%8d %-20s %s\n%!" id name state
42 printf "%8s %-20s %s\n%!" "inactive" name state
45 Libvirt.Virterror err ->
46 eprintf "error: %s\n" (Libvirt.Virterror.to_string err)
49 (* Run the garbage collector which is a good way to check for
50 * memory corruption errors and reference counting issues in libvirt.