[Libguestfs] [PATCH 2/7] Check for availability of inspect_get_product_variant

Richard W.M. Jones rjones at redhat.com
Tue Apr 26 16:49:04 UTC 2011


On Tue, Apr 26, 2011 at 05:03:47PM +0100, Matthew Booth wrote:
> F14 doesn't have inspect_get_product_variant (F15 does). The only thing it's
> needed for is differentiating Win7 from Win2k8r2 when writing to RHEV, so work
> round it if it's not there.
> ---
>  lib/Sys/VirtConvert/Connection/RHEVTarget.pm |    6 +++++-
>  1 files changed, 5 insertions(+), 1 deletions(-)
> 
> diff --git a/lib/Sys/VirtConvert/Connection/RHEVTarget.pm b/lib/Sys/VirtConvert/Connection/RHEVTarget.pm
> index 5f0fe47..687f745 100644
> --- a/lib/Sys/VirtConvert/Connection/RHEVTarget.pm
> +++ b/lib/Sys/VirtConvert/Connection/RHEVTarget.pm
> @@ -848,7 +848,11 @@ sub _get_os_type_windows
>      }
>  
>      if ($major == 6 && $minor == 1) {
> -        if ($g->inspect_get_product_variant($root) eq 'Client') {
> +        # This API is new in libguestfs 1.10
> +        # If it's not present, we can't differentiate between Win7 and Win2k8r2
> +        if ($g->can('inspect_get_product_variant') &&

My tests indicated that you have to write:

  if (defined (Sys::Guestfs->can ("inspect_get_product_variant"))) ...

However I don't know if 'defined' is really needed there or not.
'can' is documented this way:

  can(METHOD)
      "can" checks to see if its object has a method called "METHOD",
      if it does then a reference to the sub is returned, if it does
      not then "undef" is returned.

It seems to hang on whether the sub reference could ever be evaluated
to false (eg. it could be "0" or something like that).  That seems
unlikely to me right now ...

Rich.

-- 
Richard Jones, Virtualization Group, Red Hat http://people.redhat.com/~rjones
virt-p2v converts physical machines to virtual machines.  Boot with a
live CD or over the network (PXE) and turn machines into Xen guests.
http://et.redhat.com/~rjones/virt-p2v




More information about the Libguestfs mailing list