[libvirt] [PATCH 1/4] vz: Split logic of prlsdkAddDomain() into two functions

Nikolay Shirokovskiy nshirokovskiy at virtuozzo.com
Mon Jan 25 10:19:19 UTC 2016



On 23.01.2016 11:42, Mikhail Feoktistov wrote:
> Add two functions
> 1. prlsdkNewDomain() creates new empty domain in domains list with the specific uuid.
> 2. prlsdkSetDomainInstance() add data from VM to domain object.
> ---
>  src/vz/vz_sdk.c | 49 +++++++++++++++++++++++++++++++++++++++++++++++++
>  src/vz/vz_sdk.h |  8 ++++++++
>  2 files changed, 57 insertions(+)
> 
> diff --git a/src/vz/vz_sdk.c b/src/vz/vz_sdk.c
> index b78c413..c705517 100644
> --- a/src/vz/vz_sdk.c
> +++ b/src/vz/vz_sdk.c
> @@ -1509,6 +1509,55 @@ prlsdkUpdateDomain(vzConnPtr privconn, virDomainObjPtr dom)
>      return retdom ? 0 : -1;
>  }
>  
> +int
> +prlsdkSetDomainInstance(vzConnPtr privconn, virDomainObjPtr dom, const unsigned char *uuid)
> +{
> +    PRL_HANDLE sdkdom = PRL_INVALID_HANDLE;
> +    virDomainObjPtr retdom;
> +
> +    sdkdom = prlsdkSdkDomainLookupByUUID(privconn, uuid);
> +    if (sdkdom == PRL_INVALID_HANDLE)
> +        return -1;
> +
> +    retdom = prlsdkLoadDomain(privconn, sdkdom, dom);
> +    PrlHandle_Free(sdkdom);
> +    return retdom ? 0 : -1;
> +}
I suggest name it prlsdkLoadDomainUUID where use pass uuid instead of handle.
Another option is to just inline it. We use it only once.
> +
> +virDomainObjPtr
> +prlsdkNewDomain(vzConnPtr privconn, char *name, const unsigned char *uuid)
> +{
> +    virDomainDefPtr def = NULL;
> +    virDomainObjPtr dom = NULL;
> +    vzDomObjPtr pdom = NULL;
> +
> +    if (!(def = virDomainDefNewFull(name, uuid, -1)))
> +        goto error;
> +
> +    if (VIR_ALLOC(pdom) < 0)
> +        goto error;
> +
> +    if (STREQ(privconn->drivername, "vz"))
> +        def->virtType = VIR_DOMAIN_VIRT_VZ;
> +    else
> +        def->virtType = VIR_DOMAIN_VIRT_PARALLELS;
> +
> +    if (!(dom = virDomainObjListAdd(privconn->domains, def,
> +                                        privconn->xmlopt,
> +                                        0, NULL)))
> +        goto error;
> +
> +    dom->privateData = pdom;
> +    dom->privateDataFreeFunc = prlsdkDomObjFreePrivate;
> +    dom->persistent = 1;
> +    return dom;
> +
> + error:
> +    virDomainDefFree(def);
> +    VIR_FREE(pdom);
> +    return NULL;
> +}
> +
>  static int prlsdkSendEvent(vzConnPtr privconn,
>                             virDomainObjPtr dom,
>                             virDomainEventType lvEventType,
> diff --git a/src/vz/vz_sdk.h b/src/vz/vz_sdk.h
> index ff6be07..060635e 100644
> --- a/src/vz/vz_sdk.h
> +++ b/src/vz/vz_sdk.h
> @@ -32,6 +32,14 @@ int
>  prlsdkLoadDomains(vzConnPtr privconn);
>  virDomainObjPtr
>  prlsdkAddDomain(vzConnPtr privconn, const unsigned char *uuid);
> +virDomainObjPtr
> +prlsdkNewDomain(vzConnPtr privconn,
> +                char *name,
> +                const unsigned char *uuid);
> +int
> +prlsdkSetDomainInstance(vzConnPtr privconn,
> +                        virDomainObjPtr dom,
> +                        const unsigned char *uuid);
>  int prlsdkUpdateDomain(vzConnPtr privconn, virDomainObjPtr dom);
>  int prlsdkSubscribeToPCSEvents(vzConnPtr privconn);
>  void prlsdkUnsubscribeFromPCSEvents(vzConnPtr privconn);
> 




More information about the libvir-list mailing list