- (* 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