[Libguestfs] [PATCH 2/2] customize: Improve the error messages when package manager is unknown or unsupported.

Pino Toscano ptoscano at redhat.com
Wed May 4 14:09:02 UTC 2016


On Wednesday 04 May 2016 14:12:30 Richard W.M. Jones wrote:
> For Windows, we now print:
> 
> $ virt-customize -a ./test-data/phony-guests/windows.img --install MSSQL
> [   0.0] Examining the guest ...
> [  14.2] Setting a random seed
> virt-customize: warning: random seed could not be set for this type of
> guest
> [  14.2] Installing packages: MSSQL
> virt-customize: error: '--install' failed because inspection could not
> determine the package manager for this guest OS.
> 
> If this guest OS is a common one with ordinary package management then this
> may have been caused by a failure of libguestfs inspection.
> 
> For OSes such as Windows that lack package management, this is not
> possible.  Try using one of the '--firstboot*' flags instead (described in
> the manual).
> ---
>  customize/customize_run.ml | 19 ++++++++++++++-----
>  1 file changed, 14 insertions(+), 5 deletions(-)
> 
> diff --git a/customize/customize_run.ml b/customize/customize_run.ml
> index 83e70a6..c0e1e44 100644
> --- a/customize/customize_run.ml
> +++ b/customize/customize_run.ml
> @@ -94,7 +94,7 @@ exec >>%s 2>&1
>    in
>  
>    (* http://distrowatch.com/dwres.php?resource=package-management *)
> -  let guest_install_command packages =
> +  let rec guest_install_command packages =
>      let quoted_args = String.concat " " (List.map quote packages) in
>      match g#inspect_get_package_management root with
>      | "apk" ->
> @@ -116,10 +116,11 @@ exec >>%s 2>&1
>      | "urpmi" ->  sprintf "urpmi %s" quoted_args
>      | "yum" ->    sprintf "yum -y install %s" quoted_args
>      | "zypper" -> sprintf "zypper -n in -l %s" quoted_args
> +
>      | "unknown" ->
> -      error (f_"--install is not supported for this guest operating system")
> +      error_unknown_package_manager (s_"--install")
>      | pm ->
> -      error (f_"sorry, don't know how to use --install with the '%s' package manager") pm
> +      error_unimplemented_package_manager (s_"--install") pm
>  
>    and guest_update_command () =
>      match g#inspect_get_package_management root with
> @@ -142,10 +143,18 @@ exec >>%s 2>&1
>      | "urpmi" ->  "urpmi --auto-select"
>      | "yum" ->    "yum -y update"
>      | "zypper" -> "zypper -n update -l"
> +
>      | "unknown" ->
> -      error (f_"--update is not supported for this guest operating system")
> +      error_unknown_package_manager (s_"--update")
>      | pm ->
> -      error (f_"sorry, don't know how to use --update with the '%s' package manager") pm
> +      error_unimplemented_package_manager (s_"--update") pm
> +
> +  (* Windows has package_management == "unknown". *)
> +  and error_unknown_package_manager flag =
> +    error (f_"'%s' failed because inspection could not determine the package manager for this guest OS.\n\nIf this guest OS is a common one with ordinary package management then this may have been caused by a failure of libguestfs inspection.\n\nFor OSes such as Windows that lack package management, this is not possible.  Try using one of the '--firstboot*' flags instead (described in the manual).") flag

what about
"cannot run '%s' because no package management has been detected for 
this guest OS.\n etc"

> +
> +  and error_unimplemented_package_manager flag pm =
> +      error (f_"sorry, '%s' with the '%s' package manager has not been implemented.\n\nIf this guest OS has ordinary package management then you will need to add support to virt-customize.\n\nFor OSes lack package management, this is not possible.\n\nYou can work around this by using one of the '--run*' or '--firstboot*' options instead (described in the manual).") flag pm

I'd shorten this message:
"sorry, '%s' with the '%s' package manager has not been implemented yet.\n\nYou can work around this by using one of the '--run*' or '--firstboot*' options instead (described in the manual)."

rationale behind that:
- telling users to add support for that is not exactly useful, and what
  will happen in such cases is that we get reports with that
- if the OS lacks package management, then the result will be "unknown"
  and thus the other message will be shown
- this would be shown in virt-builder, other than virt-customize (but
  that's just a minor point)

-- 
Pino Toscano
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 819 bytes
Desc: This is a digitally signed message part.
URL: <http://listman.redhat.com/archives/libguestfs/attachments/20160504/81ef7d7a/attachment.sig>


More information about the Libguestfs mailing list