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); > -- libvir-list mailing list libvir-list@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/libvir-list