[Libguestfs] [PATCH v7 4/6] v2v: Add general mechanism for input and output options (-io/-oo).
Pino Toscano
ptoscano at redhat.com
Fri Mar 23 13:09:58 UTC 2018
On Thursday, 22 March 2018 16:24:23 CET Richard W.M. Jones wrote:
> + (* Input transport affects whether some input options should or
> + * should not be used.
> + *)
> + let input_transport =
> + let is_query = input_options = ["?", ""] in
> + let no_options () =
> + if is_query then (
> + printf (f_"No -io (input options) are supported with this input transport.\n");
> + exit 0
> + )
> + else if input_options <> [] then
> + error (f_"no -io (input options) are allowed here");
> + in
> + match input_transport with
> + | None -> no_options (); None
> + | Some `SSH -> no_options (); Some `SSH
> + | Some `VDDK ->
> + if is_query then (
> + Input_libvirt_vddk.print_vddk_input_options ();
> + exit 0
> + )
> + else (
> + let vddk_options =
> + Input_libvirt_vddk.parse_vddk_input_options input_options in
> + Some (`VDDK vddk_options)
> + ) in
> +
> + (* Output mode affects whether some output options should or
> + * should not be used.
> + *)
> + let output_mode =
> + let is_query = output_options = ["?", ""] in
> + let no_options () =
> + if is_query then (
> + printf (f_"No -oo (output options) are supported in this output mode.\n");
> + exit 0
> + )
> + else if output_options <> [] then
> + error (f_"no -oo (output options) are allowed here");
> + in
> + match output_mode with
> + | `Not_set -> no_options (); `Not_set
> + | `Glance -> no_options (); `Glance
> + | `Libvirt -> no_options (); `Libvirt
> + | `Local -> no_options (); `Local
> + | `Null -> no_options (); `Null
> + | `RHV -> no_options (); `RHV
> + | `QEmu -> no_options (); `QEmu
> + | `VDSM ->
> + if is_query then (
> + Output_vdsm.print_vdsm_output_options ();
> + exit 0
> + )
> + else (
> + let vdsm_options =
> + Output_vdsm.parse_vdsm_output_options output_options in
> + `VDSM vdsm_options
> + ) in
Here I'd do the check of the options (both input and output) by
prefixes, i.e. things like:
List.iter (
fun key ->
if not (String.is_prefix key "vddk-") ||
not (List.mem key vddk_option_keys) then
error (f_"-it vddk: ‘-io %s’ is not a valid input option") key
) keys;
So most probably adding a simple function to get the prefix of options
per-input and per-output mode, and using it to check.
The rest LGTM.
--
Pino Toscano
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 833 bytes
Desc: This is a digitally signed message part.
URL: <http://listman.redhat.com/archives/libguestfs/attachments/20180323/b826495c/attachment.sig>
More information about the Libguestfs
mailing list