# HG changeset patch # User David Scott # Date 1276898058 -3600 # Node ID 4f9f896fb691d71492f8c357ac9c411c37f86a76 # Parent 8ccd23b730976e8fc3db9def2e9ffde95e4b8486 Make the output of 'xe host-get-vms-which-prevent-evacuation' more uniform Now the regular output looks like this: # xe host-get-vms-which-prevent-evacuation uuid=b82bf253-1494-40f2-9c3d-34f5bd17012d uuid ( RO) : 1d4eba84-9c04-962b-8fd3-f9fb5d597b64 name-label ( RW): oim2 reason ( RO): VM_MISSING_PV_DRIVERS,OpaqueRef:1ea1dad3-3b5c-4a51-2e9b-128688585769 uuid ( RO) : 6a97a613-bfa2-088d-f415-cf49bbb4bb95 name-label ( RW): oim reason ( RO): VM_MISSING_PV_DRIVERS,OpaqueRef:e8eeb830-36ac-fa4b-5703-d8a7bb551331 The --minimal output looks like this: # xe host-get-vms-which-prevent-evacuation uuid=b82bf253-1494-40f2-9c3d-34f5bd17012d --minimal 6a97a613-bfa2-088d-f415-cf49bbb4bb95,1d4eba84-9c04-962b-8fd3-f9fb5d597b64 Signed-off-by: David Scott diff -r 8ccd23b73097 -r 4f9f896fb691 ocaml/xapi/cli_operations.ml --- a/ocaml/xapi/cli_operations.ml Fri Jun 18 20:54:26 2010 +0100 +++ b/ocaml/xapi/cli_operations.ml Fri Jun 18 22:54:18 2010 +0100 @@ -2593,10 +2593,17 @@ let uuid = List.assoc "uuid" params in let host = Client.Host.get_by_uuid rpc session_id uuid in let vms = Client.Host.get_vms_which_prevent_evacuation rpc session_id host in - let table = List.map (fun (vm, result) -> - Printf.sprintf "%s (%s)" (Client.VM.get_uuid rpc session_id vm) (Client.VM.get_name_label rpc session_id vm), - print_assert_exception (Api_errors.Server_error(List.hd result, List.tl result))) vms in - printer (Cli_printer.PTable [ ("VM", "Error") :: table ]) + + let op (vm, error) = + let error = String.concat "," error in + let record = vm_record rpc session_id vm in + let extra_field = make_field ~name:"reason" ~get:(fun () -> error) () in + let record = { record with fields = record.fields @ [ extra_field ] } in + let selected = List.hd (select_fields params [record] [ "uuid"; "name-label"; "reason"]) in + let table = List.map print_field selected in + printer (Cli_printer.PTable [table]) + in + ignore(List.iter op vms) let host_get_uncooperative_vms printer rpc session_id params = let uuid = List.assoc "uuid" params in