unsigned int ncpus,
unsigned int flags);
+typedef int
+ (*virDrvDomainGetJobInfo)(virDomainPtr domain,
+ virDomainJobInfoPtr info);
+
/**
* _virDriver:
*
virDrvDomainIsPersistent domainIsPersistent;
virDrvCPUCompare cpuCompare;
virDrvCPUBaseline cpuBaseline;
+ virDrvDomainGetJobInfo domainGetJobInfo;
};
typedef int
esxDomainIsPersistent, /* domainIsPersistent */
NULL, /* cpuCompare */
NULL, /* cpuBaseline */
+ NULL, /* domainGetJobInfo */
};
virDispatchError(conn);
return NULL;
}
+
+
+/**
+ * virDomainGetJobInfo:
+ * @domain: a domain object
+ * @info: pointer to a virDomainJobInfo structure allocated by the user
+ *
+ * Extract information about progress of a background job on a domain.
+ * Will return an error if the domain is not active.
+ *
+ * Returns 0 in case of success and -1 in case of failure.
+ */
+int
+virDomainGetJobInfo(virDomainPtr domain, virDomainJobInfoPtr info)
+{
+ virConnectPtr conn;
+ DEBUG("domain=%p, info=%p", domain, info);
+
+ virResetLastError();
+
+ if (!VIR_IS_CONNECTED_DOMAIN(domain)) {
+ virLibDomainError(NULL, VIR_ERR_INVALID_DOMAIN, __FUNCTION__);
+ virDispatchError(NULL);
+ return (-1);
+ }
+ if (info == NULL) {
+ virLibDomainError(domain, VIR_ERR_INVALID_ARG, __FUNCTION__);
+ goto error;
+ }
+
+ memset(info, 0, sizeof(virDomainJobInfo));
+
+ conn = domain->conn;
+
+ if (conn->driver->domainGetJobInfo) {
+ int ret;
+ ret = conn->driver->domainGetJobInfo (domain, info);
+ if (ret < 0)
+ goto error;
+ return ret;
+ }
+
+ virLibConnError (conn, VIR_ERR_NO_SUPPORT, __FUNCTION__);
+
+error:
+ virDispatchError(domain->conn);
+ return -1;
+}
virDomainAttachDeviceFlags;
virDomainDetachDeviceFlags;
virConnectBaselineCPU;
+ virDomainGetJobInfo;
} LIBVIRT_0.7.5;
# .... define new API here using predicted next version number ....
lxcDomainIsPersistent,
NULL, /* cpuCompare */
NULL, /* cpuBaseline */
+ NULL, /* domainGetJobInfo */
};
static virStateDriver lxcStateDriver = {
NULL, /* domainIsPersistent */
NULL, /* cpuCompare */
NULL, /* cpuBaseline */
+ NULL, /* domainGetJobInfo */
};
static virStateDriver oneStateDriver = {
openvzDomainIsPersistent,
NULL, /* cpuCompare */
NULL, /* cpuBaseline */
+ NULL, /* domainGetJobInfo */
};
int openvzRegister(void) {
NULL, /* domainIsPersistent */
NULL, /* cpuCompare */
NULL, /* cpuBaseline */
+ NULL, /* domainGetJobInfo */
};
int
qemuDomainIsPersistent,
qemuCPUCompare, /* cpuCompare */
qemuCPUBaseline, /* cpuBaseline */
+ NULL, /* domainGetJobInfo */
};
remoteDomainIsPersistent, /* domainIsPersistent */
remoteCPUCompare, /* cpuCompare */
remoteCPUBaseline, /* cpuBaseline */
+ NULL, /* domainGetJobInfo */
};
static virNetworkDriver network_driver = {
testDomainIsPersistent, /* domainIsPersistent */
NULL, /* cpuCompare */
NULL, /* cpuBaseline */
+ NULL, /* domainGetJobInfo */
};
static virNetworkDriver testNetworkDriver = {
umlDomainIsPersistent,
NULL, /* cpuCompare */
NULL, /* cpuBaseline */
+ NULL, /* domainGetJobInfo */
};
vboxDomainIsPersistent,
NULL, /* cpuCompare */
NULL, /* cpuBaseline */
+ NULL, /* domainGetJobInfo */
};
virNetworkDriver NAME(NetworkDriver) = {
xenUnifiedDomainisPersistent,
NULL, /* cpuCompare */
NULL, /* cpuBaseline */
+ NULL, /* domainGetJobInfo */
};
/**