[libvirt] Re: [PATCH] Add showError function to display error data generated by libvirt.

Dave Allan dallan at redhat.com
Wed Feb 4 20:31:04 UTC 2009


David Allan wrote:
> ---
>  examples/hellolibvirt/hellolibvirt.c |   46 ++++++++++++++++++++++++++++++++++
>  1 files changed, 46 insertions(+), 0 deletions(-)
> 
> diff --git a/examples/hellolibvirt/hellolibvirt.c b/examples/hellolibvirt/hellolibvirt.c
> index cc1af0f..234637e 100644
> --- a/examples/hellolibvirt/hellolibvirt.c
> +++ b/examples/hellolibvirt/hellolibvirt.c
> @@ -6,6 +6,43 @@
>  #include <stdio.h>
>  #include <stdlib.h>
>  #include <libvirt/libvirt.h>
> +#include <libvirt/virterror.h>
> +
> +static void
> +showError(virConnectPtr conn)
> +{
> +    int ret;
> +    virErrorPtr err;
> +
> +    err = malloc(sizeof(*err));
> +    if (NULL == err) {
> +        printf("Could not allocate memory for error data\n");
> +        goto out;
> +    }
> +
> +    ret = virConnCopyLastError(conn, err);
> +
> +    switch (ret) {
> +    case 0:
> +        printf("No error found\n");
> +        break;
> +
> +    case -1:
> +        printf("Parameter error when attempting to get last error\n");
> +        break;
> +
> +    default:
> +        printf("libvirt reported: \"%s\"\n", err->message);
> +        break;
> +    }
> +
> +    virResetError(err);
> +    free(err);
> +
> +out:
> +    return;
> +}
> +
>  
>  static int
>  showHypervisorInfo(virConnectPtr conn)
> @@ -22,12 +59,14 @@ showHypervisorInfo(virConnectPtr conn)
>      if (NULL == hvType) {
>          ret = 1;
>          printf("Failed to get hypervisor type\n");
> +        showError(conn);
>          goto out;
>      }
>  
>      if (0 != virConnectGetVersion(conn, &hvVer)) {
>          ret = 1;
>          printf("Failed to get hypervisor version\n");
> +        showError(conn);
>          goto out;
>      }
>  
> @@ -57,6 +96,7 @@ showDomains(virConnectPtr conn)
>      if (-1 == numActiveDomains) {
>          ret = 1;
>          printf("Failed to get number of active domains\n");
> +        showError(conn);
>          goto out;
>      }
>  
> @@ -64,6 +104,7 @@ showDomains(virConnectPtr conn)
>      if (-1 == numInactiveDomains) {
>          ret = 1;
>          printf("Failed to get number of inactive domains\n");
> +        showError(conn);
>          goto out;
>      }
>  
> @@ -85,6 +126,7 @@ showDomains(virConnectPtr conn)
>      if (-1 == numNames) {
>          ret = 1;
>          printf("Could not get list of defined domains from hypervisor\n");
> +        showError(conn);
>          goto out;
>      }
>  
> @@ -124,6 +166,7 @@ main(int argc, char *argv[])
>      if (NULL == conn) {
>          ret = 1;
>          printf("No connection to hypervisor\n");
> +        showError(conn);
>          goto out;
>      }
>  
> @@ -131,6 +174,7 @@ main(int argc, char *argv[])
>      if (NULL == uri) {
>          ret = 1;
>          printf("Failed to get URI for hypervisor connection\n");
> +        showError(conn);
>          goto disconnect;
>      }
>  
> @@ -150,6 +194,8 @@ main(int argc, char *argv[])
>  disconnect:
>      if (0 != virConnectClose(conn)) {
>          printf("Failed to disconnect from hypervisor\n");
> +        showError(conn);
> +        ret = 1;
>      } else {
>          printf("Disconnected from hypervisor\n");
>      }

Before I forget about this patch, if it looks ok, could someone commit it?

Thanks,
Dave




More information about the libvir-list mailing list