QEMU domain XML conversion from QEMU argv

This commit is contained in:
Daniel P. Berrange 2009-05-21 14:16:55 +00:00
parent 7828b5ccb0
commit 3d4a0ccbc6
4 changed files with 1266 additions and 3 deletions

View File

@ -1,3 +1,9 @@
Thu May 21 15:16:22 BST 2009 Daniel P. Berrange <berrange@redhat.com>
* src/qemu_driver.c, src/qemu_conf.c, src/qemu_conf.h: Add new
APIs for converting from QEMU argv into domain XML, and use for
domain XML conversion APIs.
Thu May 21 15:15:22 BST 2009 Daniel P. Berrange <berrange@redhat.com>
* src/domain_conf.h, src/vbox/vbox_tmp.c: Fix typo s/ES97/AC97/

File diff suppressed because it is too large Load Diff

View File

@ -1,5 +1,5 @@
/*
* config.h: VM configuration management
* qemu_conf.h: QEMU configuration management
*
* Copyright (C) 2006, 2007, 2009 Red Hat, Inc.
* Copyright (C) 2006 Daniel P. Berrange
@ -135,6 +135,12 @@ int qemudBuildCommandLine (virConnectPtr conn,
int *ntapfds,
const char *migrateFrom);
virDomainDefPtr qemuParseCommandLine(virConnectPtr conn,
const char **progenv,
const char **progargv);
virDomainDefPtr qemuParseCommandLineString(virConnectPtr conn,
const char *args);
const char *qemudVirtTypeToString (int type);
qemudDomainStatusPtr qemudDomainStatusParseFile(virConnectPtr conn,
virCapsPtr caps,

View File

@ -3422,6 +3422,30 @@ cleanup:
}
static char *qemuDomainXMLFromNative(virConnectPtr conn,
const char *format,
const char *config,
unsigned int flags ATTRIBUTE_UNUSED) {
virDomainDefPtr def = NULL;
char *xml = NULL;
if (STRNEQ(format, QEMU_CONFIG_FORMAT_ARGV)) {
qemudReportError(conn, NULL, NULL, VIR_ERR_INVALID_ARG,
_("unsupported config type %s"), format);
goto cleanup;
}
def = qemuParseCommandLineString(conn, config);
if (!def)
goto cleanup;
xml = virDomainDefFormat(conn, def, VIR_DOMAIN_XML_INACTIVE);
cleanup:
virDomainDefFree(def);
return xml;
}
static char *qemuDomainXMLToNative(virConnectPtr conn,
const char *format,
const char *xmlData,
@ -3438,6 +3462,8 @@ static char *qemuDomainXMLToNative(virConnectPtr conn,
char *ret = NULL;
int i;
qemuDriverLock(driver);
if (STRNEQ(format, QEMU_CONFIG_FORMAT_ARGV)) {
qemudReportError(conn, NULL, NULL, VIR_ERR_INVALID_ARG,
_("unsupported config type %s"), format);
@ -3536,6 +3562,7 @@ static char *qemuDomainXMLToNative(virConnectPtr conn,
ret = virBufferContentAndReset(&buf);
cleanup:
qemuDriverUnlock(driver);
for (tmp = retargv ; tmp && *tmp ; tmp++)
VIR_FREE(*tmp);
VIR_FREE(retargv);
@ -5351,7 +5378,7 @@ static virDriver qemuDriver = {
qemudDomainGetSecurityLabel, /* domainGetSecurityLabel */
qemudNodeGetSecurityModel, /* nodeGetSecurityModel */
qemudDomainDumpXML, /* domainDumpXML */
NULL, /* domainXmlFromNative */
qemuDomainXMLFromNative, /* domainXmlFromNative */
qemuDomainXMLToNative, /* domainXMLToNative */
qemudListDefinedDomains, /* listDefinedDomains */
qemudNumDefinedDomains, /* numOfDefinedDomains */