let doms =
(* Active domains. *)
let n = C.num_of_domains conn in
- let ids = Array.to_list (C.list_domains conn n) in
+ let ids =
+ if n > 0 then Array.to_list (C.list_domains conn n)
+ else [] in
let doms =
List.filter_map (
fun id ->
) ids in
(* Inactive domains. *)
- let n = C.num_of_defined_domains conn in
- let names = Array.to_list (C.list_defined_domains conn n) in
- let doms_inactive = List.map (fun name -> name, Inactive) names in
+ let doms_inactive =
+ try
+ let n = C.num_of_defined_domains conn in
+ let names =
+ if n > 0 then Array.to_list (C.list_defined_domains conn n)
+ else [] in
+ List.map (fun name -> name, Inactive) names
+ with
+ (* Ignore transient errors, in particular errors from
+ * num_of_defined_domains if it cannot contact xend.
+ *)
+ | Libvirt.Virterror _ -> [] in
doms @ doms_inactive in