[libvirt] [PATCH v2 6/9] admin: Add URI support and introduce virAdmGetDefaultURI

John Ferlan jferlan at redhat.com
Wed Nov 4 23:11:23 UTC 2015



On 10/16/2015 02:12 PM, Erik Skultety wrote:
> Since virt-admin should be able to connect to various admin servers
> on hosted different daemons, we need to provide URI support to
> libvirt-admin.
> ---
>  include/libvirt/libvirt-admin.h |   2 +
>  src/datatypes.c                 |   2 +
>  src/datatypes.h                 |   1 +
>  src/libvirt-admin.c             | 132 +++++++++++++++++++++++++++++++---------
>  src/libvirt_admin_public.syms   |   1 +
>  tools/virt-admin.c              |  39 ++++++++++++
>  6 files changed, 147 insertions(+), 30 deletions(-)
> 

Ran the series through the Coverity checks...

[...]

>  /**
>   * virAdmConnectOpen:
>   * @name: uri of the daemon to connect to, NULL for default
> @@ -170,6 +199,7 @@ virAdmConnectOpen(const char *name, unsigned int flags)
>  {
>      char *sock_path = NULL;
>      virAdmConnectPtr conn = NULL;
> +    virConfPtr conf = NULL;
>  
>      if (virAdmInitialize() < 0)
>          goto error;
> @@ -180,7 +210,18 @@ virAdmConnectOpen(const char *name, unsigned int flags)
>      if (!(conn = virAdmConnectNew()))
>          goto error;
>  
> -    if (!(sock_path = getSocketPath(name)))
> +    if (virGetLibvirtConfigFile(&conf) < 0)
> +        goto error;
> +

conf is allocated now and will need to be free'd/cleaned appropriately
via virConfFree() @ error:

John

> +    if (!name) {
> +        if (virAdmGetDefaultURI(conf, &conn->uri) < 0)
> +            goto error;
> +    } else {
> +        if (!(conn->uri = virURIParse(name)))
> +            goto error;
> +    }
> +
> +    if (!(sock_path = getSocketPath(conn->uri)))
>          goto error;
>  
>      if (!(conn->privateData = remoteAdminPrivNew(sock_path)))
> @@ -304,3 +345,34 @@ virAdmConnectIsAlive(virAdmConnectPtr conn)
>      else
>          return 0;
>  }
> +
> +/**
> + * virAdmConnectGetURI:
> + * @conn: pointer to an admin connection
> + *
> + * String returned by this method is normally the same as the string passed
> + * to the virAdmConnectOpen. Even if NULL was passed to virAdmConnectOpen,
> + * this method returns a non-null URI string.
> + *
> + * Returns an URI string related to the connection or NULL in case of an error.
> + * Caller is responsible for freeing the string.
> + */
> +char *
> +virAdmConnectGetURI(virAdmConnectPtr conn)
> +{
> +    char *uri = NULL;
> +    VIR_DEBUG("conn=%p", conn);
> +
> +    virResetLastError();
> +
> +    virCheckAdmConnectReturn(conn, NULL);
> +
> +    if (!(uri = virURIFormat(conn->uri)))
> +        goto error;
> +
> +    return uri;
> +
> + error:
> +    virDispatchError(NULL);
> +    return uri;
> +}

[...]




More information about the libvir-list mailing list