#include "virtypedparam.h"
#include "virhostmem.h"
#include "virhostcpu.h"
+#include "viraccessapicheck.h"
#include "vz_driver.h"
#include "vz_utils.h"
vzConnPtr privconn = conn->privateData;
char *xml;
+ if (virConnectGetCapabilitiesEnsureACL(conn) < 0)
+ return NULL;
+
xml = virCapabilitiesFormatXML(privconn->driver->caps);
return xml;
}
return VIR_DRV_OPEN_ERROR;
}
+ if (virConnectOpenEnsureACL(conn) < 0)
+ return VIR_DRV_OPEN_ERROR;
+
if (!(driver = vzGetDriverConnection()))
return VIR_DRV_OPEN_ERROR;
vzConnectGetVersion(virConnectPtr conn, unsigned long *hvVer)
{
vzConnPtr privconn = conn->privateData;
+
+ if (virConnectGetVersionEnsureACL(conn) < 0)
+ return -1;
+
*hvVer = privconn->driver->vzVersion;
return 0;
}
-static char *vzConnectGetHostname(virConnectPtr conn ATTRIBUTE_UNUSED)
+static char *vzConnectGetHostname(virConnectPtr conn)
{
+ if (virConnectGetHostnameEnsureACL(conn) < 0)
+ return NULL;
+
return virGetHostname();
}
virCheckFlags(0, NULL);
+ if (virConnectGetSysinfoEnsureACL(conn) < 0)
+ return NULL;
+
if (!driver->hostsysinfo) {
virReportError(VIR_ERR_CONFIG_UNSUPPORTED, "%s",
_("Host SMBIOS information is not available"));
vzConnPtr privconn = conn->privateData;
int n;
+ if (virConnectListDomainsEnsureACL(conn) < 0)
+ return -1;
+
n = virDomainObjListGetActiveIDs(privconn->driver->domains, ids, maxids,
- NULL, NULL);
+ virConnectListDomainsCheckACL, conn);
return n;
}
vzConnPtr privconn = conn->privateData;
int count;
+ if (virConnectNumOfDomainsEnsureACL(conn) < 0)
+ return -1;
+
count = virDomainObjListNumOfDomains(privconn->driver->domains, true,
- NULL, NULL);
+ virConnectNumOfDomainsCheckACL, conn);
return count;
}
vzConnPtr privconn = conn->privateData;
int n;
+ if (virConnectListDefinedDomainsEnsureACL(conn) < 0)
+ return -1;
+
memset(names, 0, sizeof(*names) * maxnames);
n = virDomainObjListGetInactiveNames(privconn->driver->domains, names,
- maxnames, NULL, NULL);
+ maxnames,
+ virConnectListDefinedDomainsCheckACL,
+ conn);
return n;
}
vzConnPtr privconn = conn->privateData;
int count;
+ if (virConnectNumOfDefinedDomainsEnsureACL(conn) < 0)
+ return -1;
+
count = virDomainObjListNumOfDomains(privconn->driver->domains, false,
- NULL, NULL);
+ virConnectNumOfDefinedDomainsCheckACL,
+ conn);
return count;
}
int ret = -1;
virCheckFlags(VIR_CONNECT_LIST_DOMAINS_FILTERS_ALL, -1);
+
+ if (virConnectListAllDomainsEnsureACL(conn) < 0)
+ return -1;
+
ret = virDomainObjListExport(privconn->driver->domains, conn, domains,
- NULL, flags);
+ virConnectListAllDomainsCheckACL, flags);
return ret;
}
vzDomainLookupByID(virConnectPtr conn, int id)
{
vzConnPtr privconn = conn->privateData;
- virDomainPtr ret;
+ virDomainPtr ret = NULL;
virDomainObjPtr dom;
dom = virDomainObjListFindByID(privconn->driver->domains, id);
return NULL;
}
+ if (virDomainLookupByIDEnsureACL(conn, dom->def) < 0)
+ goto cleanup;
+
ret = virGetDomain(conn, dom->def->name, dom->def->uuid);
if (ret)
ret->id = dom->def->id;
+ cleanup:
virObjectUnlock(dom);
return ret;
}
vzDomainLookupByUUID(virConnectPtr conn, const unsigned char *uuid)
{
vzConnPtr privconn = conn->privateData;
- virDomainPtr ret;
+ virDomainPtr ret = NULL;
virDomainObjPtr dom;
dom = virDomainObjListFindByUUID(privconn->driver->domains, uuid);
return NULL;
}
+ if (virDomainLookupByUUIDEnsureACL(conn, dom->def) < 0)
+ goto cleanup;
+
ret = virGetDomain(conn, dom->def->name, dom->def->uuid);
if (ret)
ret->id = dom->def->id;
+ cleanup:
virObjectUnlock(dom);
return ret;
}
vzDomainLookupByName(virConnectPtr conn, const char *name)
{
vzConnPtr privconn = conn->privateData;
- virDomainPtr ret;
+ virDomainPtr ret = NULL;
virDomainObjPtr dom;
dom = virDomainObjListFindByName(privconn->driver->domains, name);
return NULL;
}
+ if (virDomainLookupByNameEnsureACL(conn, dom->def) < 0)
+ goto cleanup;
+
ret = virGetDomain(conn, dom->def->name, dom->def->uuid);
if (ret)
ret->id = dom->def->id;
+ cleanup:
virDomainObjEndAPI(&dom);
return ret;
}
if (!(dom = vzDomObjFromDomainRef(domain)))
goto cleanup;
+ if (virDomainGetInfoEnsureACL(domain->conn, dom->def) < 0)
+ goto cleanup;
+
info->state = virDomainObjGetState(dom, NULL);
info->memory = dom->def->mem.cur_balloon;
info->maxMem = virDomainDefGetMemoryTotal(dom->def);
if (!(dom = vzDomObjFromDomain(domain)))
return NULL;
+ if (virDomainGetOSTypeEnsureACL(domain->conn, dom->def) < 0)
+ goto cleanup;
+
ignore_value(VIR_STRDUP(ret, virDomainOSTypeToString(dom->def->os.type)));
+ cleanup:
virObjectUnlock(dom);
return ret;
}
vzDomainIsPersistent(virDomainPtr domain)
{
virDomainObjPtr dom;
+ int ret = -1;
if (!(dom = vzDomObjFromDomain(domain)))
return -1;
+ if (virDomainIsPersistentEnsureACL(domain->conn, dom->def) < 0)
+ goto cleanup;
+
+ ret = 1;
+
+ cleanup:
virObjectUnlock(dom);
- return 1;
+ return ret;
}
static int
int *state, int *reason, unsigned int flags)
{
virDomainObjPtr dom;
+ int ret = -1;
virCheckFlags(0, -1);
if (!(dom = vzDomObjFromDomain(domain)))
return -1;
+ if (virDomainGetStateEnsureACL(domain->conn, dom->def) < 0)
+ goto cleanup;
+
*state = virDomainObjGetState(dom, reason);
+ ret = 0;
+ cleanup:
virObjectUnlock(dom);
- return 0;
+ return ret;
}
static char *
if (!(dom = vzDomObjFromDomain(domain)))
return NULL;
+ if (virDomainGetXMLDescEnsureACL(domain->conn, dom->def, flags) < 0)
+ goto cleanup;
+
def = (flags & VIR_DOMAIN_XML_INACTIVE) &&
dom->newDef ? dom->newDef : dom->def;
ret = virDomainDefFormat(def, privconn->driver->caps, flags);
+ cleanup:
virObjectUnlock(dom);
return ret;
}
vzDomainGetAutostart(virDomainPtr domain, int *autostart)
{
virDomainObjPtr dom;
+ int ret = -1;
if (!(dom = vzDomObjFromDomain(domain)))
return -1;
+ if (virDomainGetAutostartEnsureACL(domain->conn, dom->def) < 0)
+ goto cleanup;
+
*autostart = dom->autostart;
+ ret = 0;
+ cleanup:
virObjectUnlock(dom);
- return 0;
+ return ret;
}
static int
parse_flags)) == NULL)
goto cleanup;
+ if (virDomainDefineXMLFlagsEnsureACL(conn, def) < 0)
+ goto cleanup;
+
dom = virDomainObjListFindByUUIDRef(driver->domains, def->uuid);
if (dom == NULL) {
virResetLastError();
static int
-vzNodeGetInfo(virConnectPtr conn ATTRIBUTE_UNUSED,
+vzNodeGetInfo(virConnectPtr conn,
virNodeInfoPtr nodeinfo)
{
+ if (virNodeGetInfoEnsureACL(conn) < 0)
+ return -1;
+
return nodeGetInfo(nodeinfo);
}
static char *
-vzConnectBaselineCPU(virConnectPtr conn ATTRIBUTE_UNUSED,
+vzConnectBaselineCPU(virConnectPtr conn,
const char **xmlCPUs,
unsigned int ncpus,
unsigned int flags)
{
virCheckFlags(VIR_CONNECT_BASELINE_CPU_EXPAND_FEATURES, NULL);
+ if (virConnectBaselineCPUEnsureACL(conn) < 0)
+ return NULL;
+
return cpuBaselineXML(xmlCPUs, ncpus, NULL, 0, flags);
}
if (!(dom = vzDomObjFromDomainRef(domain)))
return -1;
+ if (virDomainGetVcpusEnsureACL(domain->conn, dom->def) < 0)
+ goto cleanup;
+
if (!virDomainObjIsActive(dom)) {
virReportError(VIR_ERR_OPERATION_INVALID,
"%s",
static int
-vzNodeGetCPUMap(virConnectPtr conn ATTRIBUTE_UNUSED,
+vzNodeGetCPUMap(virConnectPtr conn,
unsigned char **cpumap,
unsigned int *online,
unsigned int flags)
{
+ if (virNodeGetCPUMapEnsureACL(conn) < 0)
+ return -1;
+
return virHostCPUGetMap(cpumap, online, flags);
}
{
int ret = -1;
vzConnPtr privconn = conn->privateData;
+
+ if (virConnectDomainEventRegisterAnyEnsureACL(conn) < 0)
+ return -1;
+
if (virDomainEventStateRegisterID(conn,
privconn->driver->domainEventState,
domain, eventID,
{
vzConnPtr privconn = conn->privateData;
+ if (virConnectDomainEventDeregisterAnyEnsureACL(conn) < 0)
+ return -1;
+
if (virObjectEventStateDeregisterID(conn,
privconn->driver->domainEventState,
callbackID) < 0)
if (!(dom = vzDomObjFromDomainRef(domain)))
return -1;
+ if (virDomainSuspendEnsureACL(domain->conn, dom->def) < 0)
+ goto cleanup;
+
if (vzDomainObjBeginJob(dom) < 0)
goto cleanup;
job = true;
if (!(dom = vzDomObjFromDomainRef(domain)))
return -1;
+ if (virDomainResumeEnsureACL(domain->conn, dom->def) < 0)
+ goto cleanup;
+
if (vzDomainObjBeginJob(dom) < 0)
goto cleanup;
job = true;
if (!(dom = vzDomObjFromDomainRef(domain)))
return -1;
+ if (virDomainCreateWithFlagsEnsureACL(domain->conn, dom->def) < 0)
+ goto cleanup;
+
if (vzDomainObjBeginJob(dom) < 0)
goto cleanup;
job = true;
if (!(dom = vzDomObjFromDomainRef(domain)))
return -1;
+ if (virDomainDestroyFlagsEnsureACL(domain->conn, dom->def) < 0)
+ goto cleanup;
+
if (vzDomainObjBeginJob(dom) < 0)
goto cleanup;
job = true;
if (!(dom = vzDomObjFromDomainRef(domain)))
return -1;
+ if (virDomainShutdownFlagsEnsureACL(domain->conn, dom->def, flags) < 0)
+ goto cleanup;
+
if (vzDomainObjBeginJob(dom) < 0)
goto cleanup;
job = true;
if (!(dom = vzDomObjFromDomainRef(domain)))
return -1;
+ if (virDomainRebootEnsureACL(domain->conn, dom->def, flags) < 0)
+ goto cleanup;
+
if (vzDomainObjBeginJob(dom) < 0)
goto cleanup;
job = true;
if (!(dom = vzDomObjFromDomain(domain)))
return -1;
+ if (virDomainIsActiveEnsureACL(domain->conn, dom->def) < 0)
+ goto cleanup;
+
ret = virDomainObjIsActive(dom);
+
+ cleanup:
virObjectUnlock(dom);
return ret;
if (!(dom = vzDomObjFromDomainRef(domain)))
return -1;
+ if (virDomainUndefineFlagsEnsureACL(domain->conn, dom->def) < 0)
+ goto cleanup;
+
if (vzDomainObjBeginJob(dom) < 0)
goto cleanup;
job = true;
{
virDomainObjPtr dom = NULL;
int state, reason;
- int ret = 0;
+ int ret = -1;
virCheckFlags(0, -1);
if (!(dom = vzDomObjFromDomain(domain)))
return -1;
+ if (virDomainHasManagedSaveImageEnsureACL(domain->conn, dom->def) < 0)
+ goto cleanup;
+
state = virDomainObjGetState(dom, &reason);
if (state == VIR_DOMAIN_SHUTOFF && reason == VIR_DOMAIN_SHUTOFF_SAVED)
ret = 1;
+ else
+ ret = 0;
+
+ cleanup:
virObjectUnlock(dom);
return ret;
if (!(dom = vzDomObjFromDomainRef(domain)))
return -1;
+ if (virDomainManagedSaveEnsureACL(domain->conn, dom->def) < 0)
+ goto cleanup;
+
if (vzDomainObjBeginJob(dom) < 0)
goto cleanup;
job = true;
if (!(dom = vzDomObjFromDomainRef(domain)))
return -1;
+ if (virDomainManagedSaveRemoveEnsureACL(domain->conn, dom->def) < 0)
+ goto cleanup;
+
state = virDomainObjGetState(dom, &reason);
if (!(state == VIR_DOMAIN_SHUTOFF && reason == VIR_DOMAIN_SHUTOFF_SAVED))
if (vzCheckConfigUpdateFlags(dom, &flags) < 0)
goto cleanup;
+ if (virDomainAttachDeviceFlagsEnsureACL(domain->conn, dom->def, flags) < 0)
+ goto cleanup;
+
dev = virDomainDeviceDefParse(xml, dom->def, driver->caps,
driver->xmlopt, VIR_DOMAIN_XML_INACTIVE);
if (dev == NULL)
if (vzCheckConfigUpdateFlags(dom, &flags) < 0)
goto cleanup;
+ if (virDomainDetachDeviceFlagsEnsureACL(domain->conn, dom->def, flags) < 0)
+ goto cleanup;
+
dev = virDomainDeviceDefParse(xml, dom->def, driver->caps,
driver->xmlopt,
VIR_DOMAIN_XML_INACTIVE |
if (!(dom = vzDomObjFromDomainRef(domain)))
return -1;
+ if (virDomainSetUserPasswordEnsureACL(domain->conn, dom->def) < 0)
+ goto cleanup;
+
if (vzDomainObjBeginJob(dom) < 0)
goto cleanup;
job = true;
if (!(dom = vzDomObjFromDomainRef(domain)))
return -1;
+ if (virDomainUpdateDeviceFlagsEnsureACL(domain->conn, dom->def, flags) < 0)
+ goto cleanup;
+
if (vzCheckConfigUpdateFlags(dom, &flags) < 0)
goto cleanup;
if (!(dom = vzDomObjFromDomain(domain)))
return -1;
+ if (virDomainGetMaxMemoryEnsureACL(domain->conn, dom->def) < 0)
+ goto cleanup;
+
ret = virDomainDefGetMemoryTotal(dom->def);
+
+ cleanup:
virObjectUnlock(dom);
return ret;
}
if (!(dom = vzDomObjFromDomainRef(domain)))
return -1;
+ if (virDomainBlockStatsEnsureACL(domain->conn, dom->def) < 0)
+ goto cleanup;
+
if (vzDomainBlockStatsImpl(dom, path, stats) < 0)
goto cleanup;
if (!(dom = vzDomObjFromDomainRef(domain)))
return -1;
+ if (virDomainBlockStatsFlagsEnsureACL(domain->conn, dom->def) < 0)
+ goto cleanup;
+
if (vzDomainBlockStatsImpl(dom, path, &stats) < 0)
goto cleanup;
{
virDomainObjPtr dom = NULL;
vzDomObjPtr privdom;
- int ret;
+ int ret = -1;
if (!(dom = vzDomObjFromDomainRef(domain)))
return -1;
+ if (virDomainInterfaceStatsEnsureACL(domain->conn, dom->def) < 0)
+ goto cleanup;
+
privdom = dom->privateData;
ret = prlsdkGetNetStats(privdom->stats, privdom->sdkdom, path, stats);
+
+ cleanup:
virDomainObjEndAPI(&dom);
return ret;
if (!(dom = vzDomObjFromDomainRef(domain)))
return -1;
+ if (virDomainMemoryStatsEnsureACL(domain->conn, dom->def) < 0)
+ goto cleanup;
+
privdom = dom->privateData;
ret = prlsdkGetMemoryStats(privdom->stats, stats, nr_stats);
+
+ cleanup:
virDomainObjEndAPI(&dom);
return ret;
unsigned int flags)
{
virDomainObjPtr dom;
- int ret;
+ int ret = -1;
virCheckFlags(VIR_DOMAIN_AFFECT_LIVE |
VIR_DOMAIN_AFFECT_CONFIG |
if (!(dom = vzDomObjFromDomain(domain)))
return -1;
+ if (virDomainGetVcpusFlagsEnsureACL(domain->conn, dom->def, flags) < 0)
+ goto cleanup;
+
if (flags & VIR_DOMAIN_VCPU_MAXIMUM)
ret = virDomainDefGetVcpusMax(dom->def);
else
ret = virDomainDefGetVcpus(dom->def);
+ cleanup:
virObjectUnlock(dom);
return ret;
static int vzDomainIsUpdated(virDomainPtr domain)
{
virDomainObjPtr dom;
+ int ret = -1;
/* As far as VZ domains are always updated (e.g. current==persistent),
* we just check for domain existence */
if (!(dom = vzDomObjFromDomain(domain)))
return -1;
+ if (virDomainIsUpdatedEnsureACL(domain->conn, dom->def) < 0)
+ goto cleanup;
+
+ ret = 0;
+
+ cleanup:
virObjectUnlock(dom);
- return 0;
+ return ret;
}
-static int vzConnectGetMaxVcpus(virConnectPtr conn ATTRIBUTE_UNUSED,
+static int vzConnectGetMaxVcpus(virConnectPtr conn,
const char *type)
{
+ if (virConnectGetMaxVcpusEnsureACL(conn) < 0)
+ return -1;
+
/* As far as we have no limitation for containers
* we report maximum */
if (type == NULL || STRCASEEQ(type, "vz") || STRCASEEQ(type, "parallels"))
}
static int
-vzNodeGetCPUStats(virConnectPtr conn ATTRIBUTE_UNUSED,
+vzNodeGetCPUStats(virConnectPtr conn,
int cpuNum,
virNodeCPUStatsPtr params,
int *nparams,
unsigned int flags)
{
+ if (virNodeGetCPUStatsEnsureACL(conn) < 0)
+ return -1;
+
return virHostCPUGetStats(cpuNum, params, nparams, flags);
}
static int
-vzNodeGetMemoryStats(virConnectPtr conn ATTRIBUTE_UNUSED,
+vzNodeGetMemoryStats(virConnectPtr conn,
int cellNum,
virNodeMemoryStatsPtr params,
int *nparams,
unsigned int flags)
{
+ if (virNodeGetMemoryStatsEnsureACL(conn) < 0)
+ return -1;
+
return virHostMemGetStats(cellNum, params, nparams, flags);
}
static int
-vzNodeGetCellsFreeMemory(virConnectPtr conn ATTRIBUTE_UNUSED,
+vzNodeGetCellsFreeMemory(virConnectPtr conn,
unsigned long long *freeMems,
int startCell,
int maxCells)
{
+ if (virNodeGetCellsFreeMemoryEnsureACL(conn) < 0)
+ return -1;
+
return virHostMemGetCellsFree(freeMems, startCell, maxCells);
}
static unsigned long long
-vzNodeGetFreeMemory(virConnectPtr conn ATTRIBUTE_UNUSED)
+vzNodeGetFreeMemory(virConnectPtr conn)
{
unsigned long long freeMem;
+
+ if (virNodeGetFreeMemoryEnsureACL(conn) < 0)
+ return -1;
+
if (virHostMemGetInfo(NULL, &freeMem) < 0)
return 0;
return freeMem;
vzConnPtr privconn = conn->privateData;
int ret = -1;
+ if (virConnectRegisterCloseCallbackEnsureACL(conn) < 0)
+ return -1;
+
virObjectLock(privconn->driver);
if (virConnectCloseCallbackDataGetCallback(privconn->closeCallback) != NULL) {
vzConnPtr privconn = conn->privateData;
int ret = -1;
+ if (virConnectUnregisterCloseCallbackEnsureACL(conn) < 0)
+ return -1;
+
virObjectLock(privconn->driver);
if (virConnectCloseCallbackDataGetCallback(privconn->closeCallback) != cb) {
if (vzCheckConfigUpdateFlags(dom, &flags) < 0)
goto cleanup;
+ if (virDomainSetMemoryFlagsEnsureACL(domain->conn, dom->def, flags) < 0)
+ goto cleanup;
+
if (vzDomainObjBeginJob(dom) < 0)
goto cleanup;
job = true;
if (!(dom = vzDomObjFromDomainRef(domain)))
return -1;
+ if (virDomainSetMemoryEnsureACL(domain->conn, dom->def) < 0)
+ goto cleanup;
+
if (vzDomainObjBeginJob(dom) < 0)
goto cleanup;
job = true;
if (!(dom = vzDomObjFromDomainRef(domain)))
return -1;
+ if (virDomainSnapshotNumEnsureACL(domain->conn, dom->def) < 0)
+ goto cleanup;
+
if (!(snapshots = prlsdkLoadSnapshots(dom)))
goto cleanup;
if (!(dom = vzDomObjFromDomainRef(domain)))
return -1;
+ if (virDomainSnapshotListNamesEnsureACL(domain->conn, dom->def) < 0)
+ goto cleanup;
+
if (!(snapshots = prlsdkLoadSnapshots(dom)))
goto cleanup;
if (!(dom = vzDomObjFromDomainRef(domain)))
return -1;
+ if (virDomainListAllSnapshotsEnsureACL(domain->conn, dom->def) < 0)
+ goto cleanup;
+
if (!(snapshots = prlsdkLoadSnapshots(dom)))
goto cleanup;
if (!(dom = vzDomObjFromDomainRef(snapshot->domain)))
return NULL;
+ if (virDomainSnapshotGetXMLDescEnsureACL(snapshot->domain->conn, dom->def, flags) < 0)
+ goto cleanup;
+
if (!(snapshots = prlsdkLoadSnapshots(dom)))
goto cleanup;
if (!(dom = vzDomObjFromDomainRef(snapshot->domain)))
return -1;
+ if (virDomainSnapshotNumChildrenEnsureACL(snapshot->domain->conn, dom->def) < 0)
+ goto cleanup;
+
if (!(snapshots = prlsdkLoadSnapshots(dom)))
goto cleanup;
if (!(dom = vzDomObjFromDomainRef(snapshot->domain)))
return -1;
+ if (virDomainSnapshotListChildrenNamesEnsureACL(snapshot->domain->conn, dom->def) < 0)
+ goto cleanup;
+
if (!(snapshots = prlsdkLoadSnapshots(dom)))
goto cleanup;
if (!(dom = vzDomObjFromDomainRef(snapshot->domain)))
return -1;
+ if (virDomainSnapshotListAllChildrenEnsureACL(snapshot->domain->conn, dom->def) < 0)
+ goto cleanup;
+
if (!(snapshots = prlsdkLoadSnapshots(dom)))
goto cleanup;
if (!(dom = vzDomObjFromDomainRef(domain)))
return NULL;
+ if (virDomainSnapshotLookupByNameEnsureACL(domain->conn, dom->def) < 0)
+ goto cleanup;
+
if (!(snapshots = prlsdkLoadSnapshots(dom)))
goto cleanup;
if (!(dom = vzDomObjFromDomainRef(domain)))
return -1;
+ if (virDomainHasCurrentSnapshotEnsureACL(domain->conn, dom->def) < 0)
+ goto cleanup;
+
if (!(snapshots = prlsdkLoadSnapshots(dom)))
goto cleanup;
if (!(dom = vzDomObjFromDomainRef(snapshot->domain)))
return NULL;
+ if (virDomainSnapshotGetParentEnsureACL(snapshot->domain->conn, dom->def) < 0)
+ goto cleanup;
+
if (!(snapshots = prlsdkLoadSnapshots(dom)))
goto cleanup;
if (!(dom = vzDomObjFromDomainRef(domain)))
return NULL;
+ if (virDomainSnapshotCurrentEnsureACL(domain->conn, dom->def) < 0)
+ goto cleanup;
+
if (!(snapshots = prlsdkLoadSnapshots(dom)))
goto cleanup;
if (!(dom = vzDomObjFromDomainRef(snapshot->domain)))
return -1;
+ if (virDomainSnapshotIsCurrentEnsureACL(snapshot->domain->conn, dom->def) < 0)
+ goto cleanup;
+
if (!(snapshots = prlsdkLoadSnapshots(dom)))
goto cleanup;
if (!(dom = vzDomObjFromDomainRef(snapshot->domain)))
return -1;
+ if (virDomainSnapshotHasMetadataEnsureACL(snapshot->domain->conn, dom->def) < 0)
+ goto cleanup;
+
if (!(snapshots = prlsdkLoadSnapshots(dom)))
goto cleanup;
if (!(dom = vzDomObjFromDomainRef(domain)))
return NULL;
+ if (virDomainSnapshotCreateXMLEnsureACL(domain->conn, dom->def, flags) < 0)
+ goto cleanup;
+
if (!(def = virDomainSnapshotDefParseString(xmlDesc, driver->caps,
driver->xmlopt, parse_flags)))
goto cleanup;
if (!(dom = vzDomObjFromDomainRef(snapshot->domain)))
return -1;
+ if (virDomainSnapshotDeleteEnsureACL(snapshot->domain->conn, dom->def) < 0)
+ goto cleanup;
+
ret = prlsdkDeleteSnapshot(dom, snapshot->name,
flags & VIR_DOMAIN_SNAPSHOT_DELETE_CHILDREN);
+ cleanup:
virDomainObjEndAPI(&dom);
return ret;
if (!(dom = vzDomObjFromDomain(snapshot->domain)))
return -1;
+ if (virDomainRevertToSnapshotEnsureACL(snapshot->domain->conn, dom->def) < 0)
+ goto cleanup;
+
if (vzDomainObjBeginJob(dom) < 0)
goto cleanup;
job = true;
if (!(dom = vzDomObjFromDomain(domain)))
goto cleanup;
+ if (virDomainMigrateBegin3ParamsEnsureACL(domain->conn, dom->def) < 0)
+ goto cleanup;
+
xml = vzDomainMigrateBeginStep(dom, privconn->driver, params, nparams,
cookieout, cookieoutlen);
unsigned int flags)
{
vzConnPtr privconn = conn->privateData;
+ vzDriverPtr driver = privconn->driver;
const char *miguri = NULL;
const char *dname = NULL;
+ const char *dom_xml = NULL;
+ virDomainDefPtr def = NULL;
int ret = -1;
virCheckFlags(VZ_MIGRATION_FLAGS, -1);
if (virTypedParamsGetString(params, nparams,
VIR_MIGRATE_PARAM_URI, &miguri) < 0 ||
+ virTypedParamsGetString(params, nparams,
+ VIR_MIGRATE_PARAM_DEST_XML, &dom_xml) < 0 ||
virTypedParamsGetString(params, nparams,
VIR_MIGRATE_PARAM_DEST_NAME, &dname) < 0)
goto cleanup;
| VZ_MIGRATION_COOKIE_DOMAIN_NAME) < 0)
goto cleanup;
+ if (!(def = virDomainDefParseString(dom_xml, driver->caps, driver->xmlopt,
+ VIR_DOMAIN_DEF_PARSE_INACTIVE)))
+ goto cleanup;
+
+ if (dname) {
+ VIR_FREE(def->name);
+ if (VIR_STRDUP(def->name, dname) < 0)
+ goto cleanup;
+ }
+
+ if (virDomainMigratePrepare3ParamsEnsureACL(conn, def) < 0)
+ goto cleanup;
+
ret = 0;
cleanup:
+ virDomainDefFree(def);
return ret;
}
static int
vzConnectSupportsFeature(virConnectPtr conn ATTRIBUTE_UNUSED, int feature)
{
+ if (virConnectSupportsFeatureEnsureACL(conn) < 0)
+ return -1;
+
switch (feature) {
case VIR_DRV_FEATURE_MIGRATION_PARAMS:
case VIR_DRV_FEATURE_MIGRATION_P2P:
int *cookieoutlen ATTRIBUTE_UNUSED,
unsigned int flags)
{
- int ret;
+ int ret = -1;
virDomainObjPtr dom;
vzConnPtr privconn = domain->conn->privateData;
if (!(dom = vzDomObjFromDomainRef(domain)))
return -1;
+ if (virDomainMigratePerform3ParamsEnsureACL(domain->conn, dom->def) < 0)
+ goto cleanup;
+
if (flags & VIR_MIGRATE_PEER2PEER)
ret = vzDomainMigratePerformP2P(dom, privconn->driver, dconnuri,
params, nparams, flags);
ret = vzDomainMigratePerformStep(dom, privconn->driver, params, nparams,
cookiein, cookieinlen, flags);
+ cleanup:
virDomainObjEndAPI(&dom);
return ret;
if (!(dom = prlsdkAddDomainByName(driver, name)))
goto cleanup;
+ /* At first glace at may look strange that we add domain and
+ * then check ACL but we touch only cache and not real system state */
+ if (virDomainMigrateFinish3ParamsEnsureACL(dconn, dom->def) < 0)
+ goto cleanup;
+
domain = virGetDomain(dconn, dom->def->name, dom->def->uuid);
if (domain)
domain->id = dom->def->id;
vzDomainGetJobInfo(virDomainPtr domain, virDomainJobInfoPtr info)
{
virDomainObjPtr dom;
- int ret;
+ int ret = -1;
if (!(dom = vzDomObjFromDomain(domain)))
return -1;
+ if (virDomainGetJobInfoEnsureACL(domain->conn, dom->def) < 0)
+ goto cleanup;
+
ret = vzDomainGetJobInfoImpl(dom, info);
+ cleanup:
virObjectUnlock(dom);
return ret;
}
if (!(dom = vzDomObjFromDomain(domain)))
return -1;
+ if (virDomainGetJobStatsEnsureACL(domain->conn, dom->def) < 0)
+ goto cleanup;
+
if (vzDomainGetJobInfoImpl(dom, &info) < 0)
goto cleanup;