qemu: Don't use virDomainDefFormat* directly

Always use appropriate qemuDomain{,Def}Format wrapper since it may do
some additional magic based on the flags.
This commit is contained in:
Jiri Denemark 2012-05-04 21:00:13 +02:00
parent 13f9a19326
commit cd603008b1
5 changed files with 54 additions and 22 deletions

View File

@ -1223,11 +1223,13 @@ void qemuDomainObjExitRemoteWithDriver(struct qemud_driver *driver,
}
char *qemuDomainDefFormatXML(struct qemud_driver *driver,
virDomainDefPtr def,
unsigned int flags)
int
qemuDomainDefFormatBuf(struct qemud_driver *driver,
virDomainDefPtr def,
unsigned int flags,
virBuffer *buf)
{
char *ret = NULL;
int ret = -1;
virCPUDefPtr cpu = NULL;
virCPUDefPtr def_cpu = def->cpu;
@ -1247,7 +1249,7 @@ char *qemuDomainDefFormatXML(struct qemud_driver *driver,
def->cpu = cpu;
}
ret = virDomainDefFormat(def, flags);
ret = virDomainDefFormatInternal(def, flags, buf);
cleanup:
def->cpu = def_cpu;
@ -1255,6 +1257,26 @@ cleanup:
return ret;
}
char *qemuDomainDefFormatXML(struct qemud_driver *driver,
virDomainDefPtr def,
unsigned int flags)
{
virBuffer buf = VIR_BUFFER_INITIALIZER;
if (qemuDomainDefFormatBuf(driver, def, flags, &buf) < 0) {
virBufferFreeAndReset(&buf);
return NULL;
}
if (virBufferError(&buf)) {
virReportOOMError();
virBufferFreeAndReset(&buf);
return NULL;
}
return virBufferContentAndReset(&buf);
}
char *qemuDomainFormatXML(struct qemud_driver *driver,
virDomainObjPtr vm,
unsigned int flags)

View File

@ -249,6 +249,11 @@ void qemuDomainObjExitRemoteWithDriver(struct qemud_driver *driver,
virDomainObjPtr obj)
ATTRIBUTE_NONNULL(1) ATTRIBUTE_NONNULL(2);
int qemuDomainDefFormatBuf(struct qemud_driver *driver,
virDomainDefPtr vm,
unsigned int flags,
virBuffer *buf);
char *qemuDomainDefFormatXML(struct qemud_driver *driver,
virDomainDefPtr vm,
unsigned int flags);

View File

@ -4551,7 +4551,7 @@ static char *qemuDomainXMLFromNative(virConnectPtr conn,
goto cleanup;
}
xml = virDomainDefFormat(def, VIR_DOMAIN_XML_INACTIVE);
xml = qemuDomainDefFormatXML(driver, def, VIR_DOMAIN_XML_INACTIVE);
cleanup:
virDomainDefFree(def);
@ -10972,9 +10972,10 @@ static int qemuDomainRevertToSnapshot(virDomainSnapshotPtr snapshot,
snap->def->current = true;
if (snap->def->dom) {
char *xml;
if (!(xml = virDomainDefFormat(snap->def->dom,
(VIR_DOMAIN_XML_INACTIVE |
VIR_DOMAIN_XML_SECURE))))
if (!(xml = qemuDomainDefFormatXML(driver,
snap->def->dom,
VIR_DOMAIN_XML_INACTIVE |
VIR_DOMAIN_XML_SECURE)))
goto cleanup;
config = virDomainDefParseString(driver->caps, xml,
QEMU_EXPECTED_VIRT_TYPES,

View File

@ -390,7 +390,8 @@ static void qemuMigrationCookieGraphicsXMLFormat(virBufferPtr buf,
static int
qemuMigrationCookieXMLFormat(virBufferPtr buf,
qemuMigrationCookieXMLFormat(struct qemud_driver *driver,
virBufferPtr buf,
qemuMigrationCookiePtr mig)
{
char uuidstr[VIR_UUID_STRING_BUFLEN];
@ -428,10 +429,11 @@ qemuMigrationCookieXMLFormat(virBufferPtr buf,
if ((mig->flags & QEMU_MIGRATION_COOKIE_PERSISTENT) &&
mig->persistent) {
virBufferAdjustIndent(buf, 2);
if (virDomainDefFormatInternal(mig->persistent,
VIR_DOMAIN_XML_INACTIVE |
VIR_DOMAIN_XML_SECURE,
buf) < 0)
if (qemuDomainDefFormatBuf(driver,
mig->persistent,
VIR_DOMAIN_XML_INACTIVE |
VIR_DOMAIN_XML_SECURE,
buf) < 0)
return -1;
virBufferAdjustIndent(buf, -2);
}
@ -441,11 +443,12 @@ qemuMigrationCookieXMLFormat(virBufferPtr buf,
}
static char *qemuMigrationCookieXMLFormatStr(qemuMigrationCookiePtr mig)
static char *qemuMigrationCookieXMLFormatStr(struct qemud_driver *driver,
qemuMigrationCookiePtr mig)
{
virBuffer buf = VIR_BUFFER_INITIALIZER;
if (qemuMigrationCookieXMLFormat(&buf, mig) < 0) {
if (qemuMigrationCookieXMLFormat(driver, &buf, mig) < 0) {
virBufferFreeAndReset(&buf);
return NULL;
}
@ -717,7 +720,7 @@ qemuMigrationBakeCookie(qemuMigrationCookiePtr mig,
qemuMigrationCookieAddPersistent(mig, dom) < 0)
return -1;
if (!(*cookieout = qemuMigrationCookieXMLFormatStr(mig)))
if (!(*cookieout = qemuMigrationCookieXMLFormatStr(driver, mig)))
return -1;
*cookieoutlen = strlen(*cookieout) + 1;
@ -1235,7 +1238,8 @@ qemuMigrationPrepareAny(struct qemud_driver *driver,
char *xml;
int hookret;
if (!(xml = virDomainDefFormat(def, VIR_DOMAIN_XML_SECURE)))
if (!(xml = qemuDomainDefFormatXML(driver, def,
VIR_DOMAIN_XML_SECURE)))
goto cleanup;
hookret = virHookCall(VIR_HOOK_DRIVER_QEMU, def->name,

View File

@ -3322,7 +3322,7 @@ int qemuProcessStart(virConnectPtr conn,
/* Run an early hook to set-up missing devices */
if (virHookPresent(VIR_HOOK_DRIVER_QEMU)) {
char *xml = virDomainDefFormat(vm->def, 0);
char *xml = qemuDomainDefFormatXML(driver, vm->def, 0);
int hookret;
hookret = virHookCall(VIR_HOOK_DRIVER_QEMU, vm->def->name,
@ -3516,7 +3516,7 @@ int qemuProcessStart(virConnectPtr conn,
/* now that we know it is about to start call the hook if present */
if (virHookPresent(VIR_HOOK_DRIVER_QEMU)) {
char *xml = virDomainDefFormat(vm->def, 0);
char *xml = qemuDomainDefFormatXML(driver, vm->def, 0);
int hookret;
hookret = virHookCall(VIR_HOOK_DRIVER_QEMU, vm->def->name,
@ -3956,7 +3956,7 @@ void qemuProcessStop(struct qemud_driver *driver,
/* now that we know it's stopped call the hook if present */
if (virHookPresent(VIR_HOOK_DRIVER_QEMU)) {
char *xml = virDomainDefFormat(vm->def, 0);
char *xml = qemuDomainDefFormatXML(driver, vm->def, 0);
/* we can't stop the operation even if the script raised an error */
virHookCall(VIR_HOOK_DRIVER_QEMU, vm->def->name,
@ -4049,7 +4049,7 @@ retry:
/* The "release" hook cleans up additional resources */
if (virHookPresent(VIR_HOOK_DRIVER_QEMU)) {
char *xml = virDomainDefFormat(vm->def, 0);
char *xml = qemuDomainDefFormatXML(driver, vm->def, 0);
/* we can't stop the operation even if the script raised an error */
virHookCall(VIR_HOOK_DRIVER_QEMU, vm->def->name,