On Friday, 17 August 2018 17:16:13 CEST Richard W.M. Jones wrote: > This option prints the estimated size of the data that will be copied > from the source disk. > > Currently this overestimates by the size of the qcow2 header, but for > real disk images that doesn't matter much. > > For example: > > $ virt-builder fedora-27 > $ virt-v2v -i disk fedora-27.img -o null --print-estimate > [...] > virt-v2v: This guest has virtio drivers installed. > [ 44.0] Mapping filesystem data to avoid copying unused and blank areas > [ 44.5] Closing the overlay > 1047920640
This is not easy to parse, because this output contains every output, from the info messages to this value. IMHO a better idea is to make use of the machine-parseable to print this in some better format (JSON?), and possibly to a separate output than the normal stdout. I had already an idea for this, i.e. improve the output of --machine-readable. Let me shape it in form of patches. Regardless, a couple of notes follow. > + let fd = Unix.openfile json [O_WRONLY; O_CREAT; O_TRUNC] 0o600 in > + if run_command ~stdout_fd:fd !cmd <> 0 then > + error (f_"qemu-img measure failed, see earlier errors"); > + (* Note that run_command closes fd. *) > + > + let json = read_whole_file json in I'd print 'json' here when debugging is enabled. > + (* We're expecting the tree to contain nodes: > + * object [| "required", number; "fully-allocated", number |] > + * Of course the array could appear in any order. > + *) > + match tree with > + | JSON_parser_object fields -> > + let fields = Array.to_list fields in > + let rq = > + try List.assoc "required" fields > + with Not_found -> > + error_unexpected_output (s_"expecting \"required\" field") json > in > + (match rq with > + | JSON_parser_number i64 -> > + i64 > + | _ -> > + error_unexpected_output (s_"expecting \"required\" to be an > integer") > + json > + ) > + | _ -> > + error_unexpected_output (s_"expecting object at top level") json You can replace this whole using the helper object_get_number: let v = object_get_number "required" tree in -- Pino Toscano
signature.asc
Description: This is a digitally signed message part.
_______________________________________________ Libguestfs mailing list [email protected] https://www.redhat.com/mailman/listinfo/libguestfs
