virDomainObjPtr dom = NULL;
unsigned int parse_flags = VIR_DOMAIN_DEF_PARSE_INACTIVE;
vzDriverPtr driver = privconn->driver;
+ bool job = false;
virCheckFlags(VIR_DOMAIN_DEFINE_VALIDATE, NULL);
parse_flags)) == NULL)
goto cleanup;
- dom = virDomainObjListFindByUUID(driver->domains, def->uuid);
+ dom = virDomainObjListFindByUUIDRef(driver->domains, def->uuid);
if (dom == NULL) {
virResetLastError();
if (def->os.type == VIR_DOMAIN_OSTYPE_HVM) {
goto cleanup;
}
} else {
+ if (vzDomainObjBeginJob(dom) < 0)
+ goto cleanup;
+ job = true;
+
if (prlsdkApplyConfig(driver, dom, def))
goto cleanup;
retdom->id = def->id;
cleanup:
- if (dom)
- virObjectUnlock(dom);
+ if (job)
+ vzDomainObjEndJob(dom);
+ virDomainObjEndAPI(&dom);
virDomainDefFree(def);
return retdom;
}
{
vzConnPtr privconn = domain->conn->privateData;
virDomainObjPtr dom = NULL;
- int ret;
+ int ret = -1;
+ bool job = false;
virCheckFlags(VIR_DOMAIN_UNDEFINE_MANAGED_SAVE |
VIR_DOMAIN_UNDEFINE_SNAPSHOTS_METADATA, -1);
- if (!(dom = vzDomObjFromDomain(domain)))
+ if (!(dom = vzDomObjFromDomainRef(domain)))
return -1;
+ if (vzDomainObjBeginJob(dom) < 0)
+ goto cleanup;
+ job = true;
+
ret = prlsdkUnregisterDomain(privconn->driver, dom, flags);
- if (ret)
- virObjectUnlock(dom);
+
+ cleanup:
+
+ if (job)
+ vzDomainObjEndJob(dom);
+ virDomainObjEndAPI(&dom);
return ret;
}
virDomainObjPtr dom = NULL;
int state, reason;
int ret = -1;
+ bool job = false;
virCheckFlags(VIR_DOMAIN_SAVE_RUNNING |
VIR_DOMAIN_SAVE_PAUSED, -1);
- if (!(dom = vzDomObjFromDomain(domain)))
+ if (!(dom = vzDomObjFromDomainRef(domain)))
return -1;
+ if (vzDomainObjBeginJob(dom) < 0)
+ goto cleanup;
+ job = true;
+
state = virDomainObjGetState(dom, &reason);
if (state == VIR_DOMAIN_RUNNING && (flags & VIR_DOMAIN_SAVE_PAUSED)) {
ret = prlsdkDomainChangeStateLocked(privconn->driver, dom, prlsdkSuspend);
cleanup:
- virObjectUnlock(dom);
+ if (job)
+ vzDomainObjEndJob(dom);
+ virDomainObjEndAPI(&dom);
return ret;
}
virCheckFlags(0, -1);
- if (!(dom = vzDomObjFromDomain(domain)))
+ if (!(dom = vzDomObjFromDomainRef(domain)))
return -1;
state = virDomainObjGetState(dom, &reason);
ret = prlsdkDomainManagedSaveRemove(dom);
cleanup:
- virObjectUnlock(dom);
+ virDomainObjEndAPI(&dom);
return ret;
}
virDomainDeviceDefPtr dev = NULL;
virDomainObjPtr dom = NULL;
vzDriverPtr driver = privconn->driver;
+ bool job = false;
virCheckFlags(VIR_DOMAIN_AFFECT_LIVE |
VIR_DOMAIN_AFFECT_CONFIG, -1);
- if (!(dom = vzDomObjFromDomain(domain)))
+ if (!(dom = vzDomObjFromDomainRef(domain)))
return -1;
if (vzCheckConfigUpdateFlags(dom, &flags) < 0)
if (dev == NULL)
goto cleanup;
+ if (vzDomainObjBeginJob(dom) < 0)
+ goto cleanup;
+ job = true;
+
if (prlsdkAttachDevice(driver, dom, dev) < 0)
goto cleanup;
ret = 0;
cleanup:
virDomainDeviceDefFree(dev);
- virObjectUnlock(dom);
+ if (job)
+ vzDomainObjEndJob(dom);
+ virDomainObjEndAPI(&dom);
return ret;
}
virDomainDeviceDefPtr dev = NULL;
virDomainObjPtr dom = NULL;
vzDriverPtr driver = privconn->driver;
+ bool job = false;
virCheckFlags(VIR_DOMAIN_AFFECT_LIVE |
VIR_DOMAIN_AFFECT_CONFIG, -1);
- dom = vzDomObjFromDomain(domain);
+ dom = vzDomObjFromDomainRef(domain);
if (dom == NULL)
return -1;
if (dev == NULL)
goto cleanup;
+ if (vzDomainObjBeginJob(dom) < 0)
+ goto cleanup;
+ job = true;
+
if (prlsdkDetachDevice(driver, dom, dev) < 0)
goto cleanup;
ret = 0;
cleanup:
virDomainDeviceDefFree(dev);
- virObjectUnlock(dom);
+ if (job)
+ vzDomainObjEndJob(dom);
+ virDomainObjEndAPI(&dom);
return ret;
}
{
virDomainObjPtr dom = NULL;
int ret = -1;
+ bool job = false;
virCheckFlags(0, -1);
- if (!(dom = vzDomObjFromDomain(domain)))
+ if (!(dom = vzDomObjFromDomainRef(domain)))
return -1;
+ if (vzDomainObjBeginJob(dom) < 0)
+ goto cleanup;
+ job = true;
+
ret = prlsdkDomainSetUserPassword(dom, user, password);
- virObjectUnlock(dom);
+ cleanup:
+ if (job)
+ vzDomainObjEndJob(dom);
+ virDomainObjEndAPI(&dom);
return ret;
}
virDomainObjPtr dom = NULL;
virDomainDeviceDefPtr dev = NULL;
vzDriverPtr driver = privconn->driver;
+ bool job = false;
virCheckFlags(VIR_DOMAIN_AFFECT_LIVE |
VIR_DOMAIN_AFFECT_CONFIG, -1);
- if (!(dom = vzDomObjFromDomain(domain)))
+ if (!(dom = vzDomObjFromDomainRef(domain)))
return -1;
if (vzCheckConfigUpdateFlags(dom, &flags) < 0)
VIR_DOMAIN_XML_INACTIVE)))
goto cleanup;
+ if (vzDomainObjBeginJob(dom) < 0)
+ goto cleanup;
+ job = true;
+
if (prlsdkUpdateDevice(driver, dom, dev) < 0)
goto cleanup;
cleanup:
virDomainDeviceDefFree(dev);
- virObjectUnlock(dom);
+ if (job)
+ vzDomainObjEndJob(dom);
+ virDomainObjEndAPI(&dom);
return ret;
}
{
virDomainObjPtr dom = NULL;
int ret = -1;
+ bool job = false;
virCheckFlags(VIR_DOMAIN_AFFECT_LIVE |
VIR_DOMAIN_AFFECT_CONFIG, -1);
- if (!(dom = vzDomObjFromDomain(domain)))
+ if (!(dom = vzDomObjFromDomainRef(domain)))
return -1;
if (useflags && vzCheckConfigUpdateFlags(dom, &flags) < 0)
goto cleanup;
+ if (vzDomainObjBeginJob(dom) < 0)
+ goto cleanup;
+ job = true;
+
ret = prlsdkSetMemsize(dom, memory >> 10);
cleanup:
- virObjectUnlock(dom);
+ if (job)
+ vzDomainObjEndJob(dom);
+ virDomainObjEndAPI(&dom);
return ret;
}
virCheckFlags(VIR_DOMAIN_SNAPSHOT_LIST_ROOTS |
VIR_DOMAIN_SNAPSHOT_FILTERS_ALL, -1);
- if (!(dom = vzDomObjFromDomain(domain)))
+ if (!(dom = vzDomObjFromDomainRef(domain)))
return -1;
if (!(snapshots = prlsdkLoadSnapshots(dom)))
cleanup:
virDomainSnapshotObjListFree(snapshots);
- virObjectUnlock(dom);
+ virDomainObjEndAPI(&dom);
return n;
}
virCheckFlags(VIR_DOMAIN_SNAPSHOT_LIST_ROOTS |
VIR_DOMAIN_SNAPSHOT_FILTERS_ALL, -1);
- if (!(dom = vzDomObjFromDomain(domain)))
+ if (!(dom = vzDomObjFromDomainRef(domain)))
return -1;
if (!(snapshots = prlsdkLoadSnapshots(dom)))
cleanup:
virDomainSnapshotObjListFree(snapshots);
- virObjectUnlock(dom);
+ virDomainObjEndAPI(&dom);
return n;
}
virCheckFlags(VIR_DOMAIN_SNAPSHOT_LIST_ROOTS |
VIR_DOMAIN_SNAPSHOT_FILTERS_ALL, -1);
- if (!(dom = vzDomObjFromDomain(domain)))
+ if (!(dom = vzDomObjFromDomainRef(domain)))
return -1;
if (!(snapshots = prlsdkLoadSnapshots(dom)))
cleanup:
virDomainSnapshotObjListFree(snapshots);
- virObjectUnlock(dom);
+ virDomainObjEndAPI(&dom);
return n;
}
virCheckFlags(VIR_DOMAIN_XML_SECURE, NULL);
- if (!(dom = vzDomObjFromDomain(snapshot->domain)))
+ if (!(dom = vzDomObjFromDomainRef(snapshot->domain)))
return NULL;
if (!(snapshots = prlsdkLoadSnapshots(dom)))
cleanup:
virDomainSnapshotObjListFree(snapshots);
- virObjectUnlock(dom);
+ virDomainObjEndAPI(&dom);
return xml;
}
virCheckFlags(VIR_DOMAIN_SNAPSHOT_LIST_DESCENDANTS |
VIR_DOMAIN_SNAPSHOT_FILTERS_ALL, -1);
- if (!(dom = vzDomObjFromDomain(snapshot->domain)))
+ if (!(dom = vzDomObjFromDomainRef(snapshot->domain)))
return -1;
if (!(snapshots = prlsdkLoadSnapshots(dom)))
cleanup:
virDomainSnapshotObjListFree(snapshots);
- virObjectUnlock(dom);
+ virDomainObjEndAPI(&dom);
return n;
}
virCheckFlags(VIR_DOMAIN_SNAPSHOT_LIST_DESCENDANTS |
VIR_DOMAIN_SNAPSHOT_FILTERS_ALL, -1);
- if (!(dom = vzDomObjFromDomain(snapshot->domain)))
+ if (!(dom = vzDomObjFromDomainRef(snapshot->domain)))
return -1;
if (!(snapshots = prlsdkLoadSnapshots(dom)))
cleanup:
virDomainSnapshotObjListFree(snapshots);
- virObjectUnlock(dom);
+ virDomainObjEndAPI(&dom);
return n;
}
virCheckFlags(VIR_DOMAIN_SNAPSHOT_LIST_DESCENDANTS |
VIR_DOMAIN_SNAPSHOT_FILTERS_ALL, -1);
- if (!(dom = vzDomObjFromDomain(snapshot->domain)))
+ if (!(dom = vzDomObjFromDomainRef(snapshot->domain)))
return -1;
if (!(snapshots = prlsdkLoadSnapshots(dom)))
cleanup:
virDomainSnapshotObjListFree(snapshots);
- virObjectUnlock(dom);
+ virDomainObjEndAPI(&dom);
return n;
}
virCheckFlags(0, NULL);
- if (!(dom = vzDomObjFromDomain(domain)))
+ if (!(dom = vzDomObjFromDomainRef(domain)))
return NULL;
if (!(snapshots = prlsdkLoadSnapshots(dom)))
snapshot = virGetDomainSnapshot(domain, snap->def->name);
cleanup:
- virObjectUnlock(dom);
+ virDomainObjEndAPI(&dom);
virDomainSnapshotObjListFree(snapshots);
return snapshot;
virCheckFlags(0, -1);
- if (!(dom = vzDomObjFromDomain(domain)))
+ if (!(dom = vzDomObjFromDomainRef(domain)))
return -1;
if (!(snapshots = prlsdkLoadSnapshots(dom)))
cleanup:
virDomainSnapshotObjListFree(snapshots);
- virObjectUnlock(dom);
+ virDomainObjEndAPI(&dom);
return ret;
}
virCheckFlags(0, NULL);
- if (!(dom = vzDomObjFromDomain(snapshot->domain)))
+ if (!(dom = vzDomObjFromDomainRef(snapshot->domain)))
return NULL;
if (!(snapshots = prlsdkLoadSnapshots(dom)))
cleanup:
virDomainSnapshotObjListFree(snapshots);
- virObjectUnlock(dom);
+ virDomainObjEndAPI(&dom);
return parent;
}
virCheckFlags(0, NULL);
- if (!(dom = vzDomObjFromDomain(domain)))
+ if (!(dom = vzDomObjFromDomainRef(domain)))
return NULL;
if (!(snapshots = prlsdkLoadSnapshots(dom)))
cleanup:
virDomainSnapshotObjListFree(snapshots);
- virObjectUnlock(dom);
+ virDomainObjEndAPI(&dom);
return snapshot;
}
virCheckFlags(0, -1);
- if (!(dom = vzDomObjFromDomain(snapshot->domain)))
+ if (!(dom = vzDomObjFromDomainRef(snapshot->domain)))
return -1;
if (!(snapshots = prlsdkLoadSnapshots(dom)))
cleanup:
virDomainSnapshotObjListFree(snapshots);
- virObjectUnlock(dom);
+ virDomainObjEndAPI(&dom);
return ret;
}
virCheckFlags(0, -1);
- if (!(dom = vzDomObjFromDomain(snapshot->domain)))
+ if (!(dom = vzDomObjFromDomainRef(snapshot->domain)))
return -1;
if (!(snapshots = prlsdkLoadSnapshots(dom)))
cleanup:
virDomainSnapshotObjListFree(snapshots);
- virObjectUnlock(dom);
+ virDomainObjEndAPI(&dom);
+
return ret;
}
unsigned int parse_flags = VIR_DOMAIN_SNAPSHOT_PARSE_DISKS;
virDomainSnapshotObjListPtr snapshots = NULL;
virDomainSnapshotObjPtr current;
+ bool job = false;
virCheckFlags(0, NULL);
- if (!(dom = vzDomObjFromDomain(domain)))
+ if (!(dom = vzDomObjFromDomainRef(domain)))
return NULL;
if (!(def = virDomainSnapshotDefParseString(xmlDesc, driver->caps,
goto cleanup;
}
+ if (vzDomainObjBeginJob(dom) < 0)
+ goto cleanup;
+ job = true;
+
/* snaphot name is ignored, it will be set to auto generated by sdk uuid */
if (prlsdkCreateSnapshot(dom, def->description) < 0)
goto cleanup;
cleanup:
virDomainSnapshotObjListFree(snapshots);
- virObjectUnlock(dom);
virDomainSnapshotDefFree(def);
+ if (job)
+ vzDomainObjEndJob(dom);
+ virDomainObjEndAPI(&dom);
return snapshot;
}
virCheckFlags(VIR_DOMAIN_SNAPSHOT_DELETE_CHILDREN, -1);
- if (!(dom = vzDomObjFromDomain(snapshot->domain)))
+ if (!(dom = vzDomObjFromDomainRef(snapshot->domain)))
return -1;
ret = prlsdkDeleteSnapshot(dom, snapshot->name,
flags & VIR_DOMAIN_SNAPSHOT_DELETE_CHILDREN);
- virObjectUnlock(dom);
+ virDomainObjEndAPI(&dom);
return ret;
}
{
virDomainObjPtr dom;
int ret = -1;
+ bool job = false;
virCheckFlags(VIR_DOMAIN_SNAPSHOT_REVERT_PAUSED, -1);
if (!(dom = vzDomObjFromDomain(snapshot->domain)))
return -1;
+ if (vzDomainObjBeginJob(dom) < 0)
+ goto cleanup;
+ job = true;
+
ret = prlsdkSwitchToSnapshot(dom, snapshot->name,
flags & VIR_DOMAIN_SNAPSHOT_REVERT_PAUSED);
-
- virObjectUnlock(dom);
+ cleanup:
+ if (job)
+ vzDomainObjEndJob(dom);
+ virDomainObjEndAPI(&dom);
return ret;
}
const char *miguri = NULL;
const char *dname = NULL;
vzMigrationCookiePtr mig = NULL;
+ bool job = false;
virCheckFlags(VZ_MIGRATION_FLAGS, -1);
VZ_MIGRATION_COOKIE_SESSION_UUID)))
goto cleanup;
- if (!(dom = vzDomObjFromDomain(domain)))
+ if (!(dom = vzDomObjFromDomainRef(domain)))
goto cleanup;
+ if (vzDomainObjBeginJob(dom) < 0)
+ goto cleanup;
+ job = true;
+
if (!(vzuri = vzParseVzURI(miguri)))
goto cleanup;
goto cleanup;
virDomainObjListRemove(privconn->driver->domains, dom);
- dom = NULL;
+ virObjectLock(dom);
ret = 0;
cleanup:
- if (dom)
- virObjectUnlock(dom);
+ if (job)
+ vzDomainObjEndJob(dom);
+ virDomainObjEndAPI(&dom);
virURIFree(vzuri);
vzMigrationCookieFree(mig);
* is already finished. */
if (!domain)
VIR_WARN("Can't provide domain '%s' after successfull migration.", name);
- if (dom)
- virObjectUnlock(dom);
+ virDomainObjEndAPI(&dom);
return domain;
}
getJobResultHelper(job, JOB_INFINIT_WAIT_TIMEOUT, \
result, __FILE__, __FUNCTION__, __LINE__)
+static PRL_RESULT
+getDomainJobResultHelper(PRL_HANDLE job, virDomainObjPtr dom,
+ unsigned int timeout, PRL_HANDLE *result,
+ const char *filename, const char *funcname,
+ size_t linenr)
+{
+ PRL_RESULT pret;
+
+ if (dom)
+ virObjectUnlock(dom);
+ pret = getJobResultHelper(job, timeout, result, filename, funcname, linenr);
+ if (dom)
+ virObjectLock(dom);
+
+ return pret;
+}
+
+#define getDomainJobResult(job, dom, result) \
+ getDomainJobResultHelper(job, dom, JOB_INFINIT_WAIT_TIMEOUT, \
+ result, __FILE__, __FUNCTION__, __LINE__)
+
static PRL_RESULT
waitJobHelper(PRL_HANDLE job, unsigned int timeout,
const char *filename, const char *funcname,
waitJobHelper(job, JOB_INFINIT_WAIT_TIMEOUT, __FILE__, \
__FUNCTION__, __LINE__)
+static PRL_RESULT
+waitDomainJobHelper(PRL_HANDLE job, virDomainObjPtr dom, unsigned int timeout,
+ const char *filename, const char *funcname,
+ size_t linenr)
+{
+ PRL_RESULT ret;
+
+ if (dom)
+ virObjectUnlock(dom);
+ ret = waitJobHelper(job, timeout, filename, funcname, linenr);
+ if (dom)
+ virObjectLock(dom);
+
+ return ret;
+}
+
+#define waitDomainJob(job, dom) \
+ waitDomainJobHelper(job, dom, JOB_INFINIT_WAIT_TIMEOUT, __FILE__, \
+ __FUNCTION__, __LINE__)
+
typedef PRL_RESULT (*prlsdkParamGetterType)(PRL_HANDLE, char*, PRL_UINT32*);
static char*
}
static int
-prlsdkGetDomainState(PRL_HANDLE sdkdom, VIRTUAL_MACHINE_STATE_PTR vmState)
+prlsdkGetDomainState(virDomainObjPtr dom, PRL_HANDLE sdkdom, VIRTUAL_MACHINE_STATE_PTR vmState)
{
PRL_HANDLE job = PRL_INVALID_HANDLE;
PRL_HANDLE result = PRL_INVALID_HANDLE;
job = PrlVm_GetState(sdkdom);
- if (PRL_FAILED(getJobResult(job, &result)))
+ if (PRL_FAILED(getDomainJobResult(job, dom, &result)))
goto cleanup;
pret = PrlResult_GetParamByIndex(result, 0, &vmInfo);
/* if dom is NULL adds new domain into domain list
* if dom not NULL updates given locked dom object.
*
- * Returned object is locked.
+ * Returned object is locked and referenced.
*/
static virDomainObjPtr
goto error;
}
- if (prlsdkGetDomainState(sdkdom, &domainState) < 0)
+ if (prlsdkGetDomainState(dom, sdkdom, &domainState) < 0)
goto error;
if (virDomainDefAddImplicitDevices(def) < 0)
goto error;
virObjectLock(driver);
- if (!(olddom = virDomainObjListFindByUUID(driver->domains, def->uuid)))
+ if (!(olddom = virDomainObjListFindByUUIDRef(driver->domains, def->uuid)))
dom = virDomainObjListAdd(driver->domains, def, driver->xmlopt, 0, NULL);
virObjectUnlock(driver);
goto error;
}
+ virObjectRef(dom);
pdom = dom->privateData;
pdom->sdkdom = sdkdom;
PrlHandle_AddRef(sdkdom);
pret = PrlResult_GetParamByIndex(result, i, &sdkdom);
prlsdkCheckRetGoto(pret, error);
- if ((dom = prlsdkLoadDomain(driver, sdkdom, NULL)))
- virObjectUnlock(dom);
+ dom = prlsdkLoadDomain(driver, sdkdom, NULL);
+ virDomainObjEndAPI(&dom);
PrlHandle_Free(sdkdom);
sdkdom = PRL_INVALID_HANDLE;
vzDomObjPtr pdom = dom->privateData;
job = PrlVm_RefreshConfig(pdom->sdkdom);
- if (waitJob(job))
+ if (waitDomainJob(job, dom))
return -1;
return prlsdkLoadDomain(driver, pdom->sdkdom, dom) ? 0 : -1;
unsigned char *uuid)
{
virDomainObjPtr dom = NULL;
+ bool job = false;
- dom = virDomainObjListFindByUUID(driver->domains, uuid);
+ dom = virDomainObjListFindByUUIDRef(driver->domains, uuid);
if (dom == NULL)
return;
+ if (vzDomainObjBeginJob(dom) < 0)
+ goto cleanup;
+ job = true;
+
if (prlsdkUpdateDomain(driver, dom) < 0)
goto cleanup;
VIR_DOMAIN_EVENT_DEFINED_UPDATED);
cleanup:
- virObjectUnlock(dom);
+ if (job)
+ vzDomainObjEndJob(dom);
+ virDomainObjEndAPI(&dom);
return;
}
{
virDomainObjPtr dom = NULL;
- if (!(dom = virDomainObjListFindByUUID(driver->domains, uuid)) &&
+ if (!(dom = virDomainObjListFindByUUIDRef(driver->domains, uuid)) &&
!(dom = prlsdkAddDomainByUUID(driver, uuid)))
goto cleanup;
VIR_DOMAIN_EVENT_DEFINED_ADDED);
cleanup:
- if (dom)
- virObjectUnlock(dom);
+ virDomainObjEndAPI(&dom);
return;
}
virErrorNumber virerr;
pdom = dom->privateData;
+ virObjectUnlock(dom);
pret = chstate(pdom->sdkdom);
+ virObjectLock(dom);
if (PRL_FAILED(pret)) {
virResetLastError();
vzConnPtr privconn = domain->conn->privateData;
virDomainObjPtr dom;
int ret = -1;
+ bool job = false;
- if (!(dom = vzDomObjFromDomain(domain)))
+ if (!(dom = vzDomObjFromDomainRef(domain)))
return -1;
+ if (vzDomainObjBeginJob(dom) < 0)
+ goto cleanup;
+ job = true;
+
ret = prlsdkDomainChangeStateLocked(privconn->driver, dom, chstate);
- virObjectUnlock(dom);
+
+ cleanup:
+ if (job)
+ vzDomainObjEndJob(dom);
+ virDomainObjEndAPI(&dom);
return ret;
}
}
static int prlsdkConfigureNet(vzDriverPtr driver,
+ virDomainObjPtr dom,
PRL_HANDLE sdkdom,
virDomainNetDefPtr net,
bool isCt, bool create)
job = PrlSrv_AddVirtualNetwork(driver->server,
vnet,
PRL_USE_VNET_NAME_FOR_BRIDGE_NAME);
- if (PRL_FAILED(pret = waitJob(job)))
+ if (PRL_FAILED(pret = waitDomainJob(job, dom)))
goto cleanup;
pret = PrlVmDev_SetEmulatedType(sdknet, PNA_BRIDGED_ETHERNET);
}
static void
-prlsdkCleanupBridgedNet(vzDriverPtr driver, virDomainNetDefPtr net)
+prlsdkCleanupBridgedNet(vzDriverPtr driver,
+ virDomainObjPtr dom,
+ virDomainNetDefPtr net)
{
PRL_RESULT pret;
PRL_HANDLE vnet = PRL_INVALID_HANDLE;
prlsdkCheckRetGoto(pret, cleanup);
job = PrlSrv_DeleteVirtualNetwork(driver->server, vnet, 0);
- if (PRL_FAILED(pret = waitJob(job)))
- goto cleanup;
+ ignore_value(waitDomainJob(job, dom));
cleanup:
PrlHandle_Free(vnet);
PRL_HANDLE job = PRL_INVALID_HANDLE;
job = PrlVm_BeginEdit(privdom->sdkdom);
- if (PRL_FAILED(waitJob(job)))
+ if (PRL_FAILED(waitDomainJob(job, dom)))
return -1;
switch (dev->type) {
return -1;
}
- if (prlsdkConfigureNet(driver, privdom->sdkdom, dev->data.net,
+ if (prlsdkConfigureNet(driver, dom, privdom->sdkdom, dev->data.net,
IS_CT(dom->def), true) < 0)
return -1;
}
job = PrlVm_CommitEx(privdom->sdkdom, PVCF_DETACH_HDD_BUNDLE);
- if (PRL_FAILED(waitJob(job)))
+ if (PRL_FAILED(waitDomainJob(job, dom)))
return -1;
return 0;
PRL_RESULT pret;
job = PrlVm_BeginEdit(privdom->sdkdom);
- if (PRL_FAILED(waitJob(job)))
+ if (PRL_FAILED(waitDomainJob(job, dom)))
goto cleanup;
switch (dev->type) {
if (sdkdev == PRL_INVALID_HANDLE)
goto cleanup;
- prlsdkCleanupBridgedNet(driver, dev->data.net);
+ prlsdkCleanupBridgedNet(driver, dom, dev->data.net);
pret = PrlVmDev_Remove(sdkdev);
prlsdkCheckRetGoto(pret, cleanup);
}
job = PrlVm_CommitEx(privdom->sdkdom, PVCF_DETACH_HDD_BUNDLE);
- if (PRL_FAILED(waitJob(job)))
+ if (PRL_FAILED(waitDomainJob(job, dom)))
goto cleanup;
ret = 0;
PRL_HANDLE job = PRL_INVALID_HANDLE;
job = PrlVm_BeginEdit(privdom->sdkdom);
- if (PRL_FAILED(waitJob(job)))
+ if (PRL_FAILED(waitDomainJob(job, dom)))
return -1;
switch (dev->type) {
break;
case VIR_DOMAIN_DEVICE_NET:
- if (prlsdkConfigureNet(driver, privdom->sdkdom, dev->data.net,
+ if (prlsdkConfigureNet(driver, dom, privdom->sdkdom, dev->data.net,
IS_CT(dom->def), false) < 0)
return -1;
}
job = PrlVm_CommitEx(privdom->sdkdom, PVCF_DETACH_HDD_BUNDLE);
- if (PRL_FAILED(waitJob(job)))
+ if (PRL_FAILED(waitDomainJob(job, dom)))
return -1;
return 0;
PRL_HANDLE job = PRL_INVALID_HANDLE;
job = PrlVm_BeginEdit(privdom->sdkdom);
- if (PRL_FAILED(waitJob(job)))
+ if (PRL_FAILED(waitDomainJob(job, dom)))
goto cleanup;
job = PrlVm_SetUserPasswd(privdom->sdkdom,
password,
0);
- if (PRL_FAILED(waitJob(job)))
+ if (PRL_FAILED(waitDomainJob(job, dom)))
goto cleanup;
job = PrlVm_CommitEx(privdom->sdkdom, 0);
- if (PRL_FAILED(waitJob(job)))
+ if (PRL_FAILED(waitDomainJob(job, dom)))
goto cleanup;
ret = 0;
static int
prlsdkDoApplyConfig(vzDriverPtr driver,
+ virDomainObjPtr dom,
PRL_HANDLE sdkdom,
- virDomainDefPtr def,
- virDomainDefPtr olddef)
+ virDomainDefPtr def)
{
PRL_RESULT pret;
size_t i;
if (prlsdkRemoveBootDevices(sdkdom) < 0)
goto error;
- if (olddef) {
- for (i = 0; i < olddef->nnets; i++)
- prlsdkCleanupBridgedNet(driver, olddef->nets[i]);
+ if (dom) {
+ for (i = 0; i < dom->def->nnets; i++)
+ prlsdkCleanupBridgedNet(driver, dom, dom->def->nets[i]);
}
for (i = 0; i < def->nnets; i++) {
- if (prlsdkConfigureNet(driver, sdkdom, def->nets[i],
+ if (prlsdkConfigureNet(driver, dom, sdkdom, def->nets[i],
IS_CT(def), true) < 0)
goto error;
}
VIR_FREE(mask);
for (i = 0; i < def->nnets; i++)
- prlsdkCleanupBridgedNet(driver, def->nets[i]);
+ prlsdkCleanupBridgedNet(driver, dom, def->nets[i]);
return -1;
}
int ret;
job = PrlVm_BeginEdit(privdom->sdkdom);
- if (PRL_FAILED(waitJob(job)))
+ if (PRL_FAILED(waitDomainJob(job, dom)))
return -1;
- ret = prlsdkDoApplyConfig(driver, privdom->sdkdom, new, dom->def);
+ ret = prlsdkDoApplyConfig(driver, dom, privdom->sdkdom, new);
if (ret == 0) {
job = PrlVm_CommitEx(privdom->sdkdom, PVCF_DETACH_HDD_BUNDLE);
- if (PRL_FAILED(waitJob(job)))
+ if (PRL_FAILED(waitDomainJob(job, dom)))
ret = -1;
}
pret = PrlVmCfg_SetOfflineManagementEnabled(sdkdom, 0);
prlsdkCheckRetGoto(pret, cleanup);
- if (prlsdkDoApplyConfig(driver, sdkdom, def, NULL) < 0)
+ if (prlsdkDoApplyConfig(driver, NULL, sdkdom, def) < 0)
goto cleanup;
job = PrlVm_Reg(sdkdom, "", 1);
}
- if (prlsdkDoApplyConfig(driver, sdkdom, def, NULL) < 0)
+ if (prlsdkDoApplyConfig(driver, NULL, sdkdom, def) < 0)
goto cleanup;
flags = PACF_NON_INTERACTIVE_MODE;
* Returns 0 if hard disks were successfully detached or not detected.
*/
static int
-prlsdkDetachDomainHardDisks(PRL_HANDLE sdkdom)
+prlsdkDetachDomainHardDisks(virDomainObjPtr dom)
{
int ret = -1;
PRL_RESULT pret;
PRL_UINT32 i;
PRL_HANDLE job;
PRL_HANDLE sdkdisk = PRL_INVALID_HANDLE;
+ vzDomObjPtr pdom = dom->privateData;
+ PRL_HANDLE sdkdom = pdom->sdkdom;
job = PrlVm_BeginEdit(sdkdom);
- if (PRL_FAILED(waitJob(job)))
+ if (PRL_FAILED(waitDomainJob(job, dom)))
goto cleanup;
pret = PrlVmCfg_GetHardDisksCount(sdkdom, &hddCount);
}
job = PrlVm_CommitEx(sdkdom, PVCF_DETACH_HDD_BUNDLE);
- if (PRL_FAILED(waitJob(job)))
+ if (PRL_FAILED(waitDomainJob(job, dom)))
goto cleanup;
ret = 0;
int ret = -1;
int num;
- if (prlsdkGetDomainState(privdom->sdkdom, &domainState) < 0)
+ if (prlsdkGetDomainState(dom, privdom->sdkdom, &domainState) < 0)
return -1;
if (VMS_SUSPENDED == domainState &&
goto cleanup;
}
- if (prlsdkDetachDomainHardDisks(privdom->sdkdom))
+ if (prlsdkDetachDomainHardDisks(dom))
goto cleanup;
job = PrlVm_Delete(privdom->sdkdom, PRL_INVALID_HANDLE);
- if (PRL_FAILED(waitJob(job)))
+ if (PRL_FAILED(waitDomainJob(job, dom)))
goto cleanup;
for (i = 0; i < dom->def->nnets; i++)
- prlsdkCleanupBridgedNet(driver, dom->def->nets[i]);
+ prlsdkCleanupBridgedNet(driver, dom, dom->def->nets[i]);
prlsdkSendEvent(driver, dom, VIR_DOMAIN_EVENT_UNDEFINED,
VIR_DOMAIN_EVENT_UNDEFINED_REMOVED);
virDomainObjListRemove(driver->domains, dom);
+ virObjectLock(dom);
ret = 0;
cleanup:
PRL_HANDLE job;
job = PrlVm_DropSuspendedState(privdom->sdkdom);
- if (PRL_FAILED(waitJob(job)))
+ if (PRL_FAILED(waitDomainJob(job, dom)))
return -1;
return 0;
PRL_RESULT pret;
job = PrlVm_BeginEdit(privdom->sdkdom);
- if (PRL_FAILED(waitJob(job)))
+ if (PRL_FAILED(waitDomainJob(job, dom)))
goto error;
pret = PrlVmCfg_SetRamSize(privdom->sdkdom, memsize);
prlsdkCheckRetGoto(pret, error);
job = PrlVm_CommitEx(privdom->sdkdom, 0);
- if (PRL_FAILED(waitJob(job)))
+ if (PRL_FAILED(waitDomainJob(job, dom)))
goto error;
return 0;
char *treexml = NULL;
job = PrlVm_GetSnapshotsTreeEx(privdom->sdkdom, PGST_WITHOUT_SCREENSHOTS);
- if (PRL_FAILED(getJobResult(job, &result)))
+ if (PRL_FAILED(getDomainJobResult(job, dom, &result)))
goto cleanup;
if (!(treexml = prlsdkGetStringParamVar(PrlResult_GetParamAsString, result)))
job = PrlVm_CreateSnapshot(privdom->sdkdom, "",
description ? : "");
- if (PRL_FAILED(waitJob(job)))
+ if (PRL_FAILED(waitDomainJob(job, dom)))
return -1;
return 0;
PRL_HANDLE job;
job = PrlVm_DeleteSnapshot(privdom->sdkdom, uuid, children);
- if (PRL_FAILED(waitJob(job)))
+ if (PRL_FAILED(waitDomainJob(job, dom)))
return -1;
return 0;
flags |= PSSF_SKIP_RESUME;
job = PrlVm_SwitchToSnapshotEx(privdom->sdkdom, uuid, flags);
- if (PRL_FAILED(waitJob(job)))
+ if (PRL_FAILED(waitDomainJob(job, dom)))
return -1;
return 0;
PRL_TRUE
);
- if (PRL_FAILED(waitJob(job)))
+ if (PRL_FAILED(waitDomainJob(job, dom)))
goto cleanup;
ret = 0;