Devel
Threads by month
- ----- 2025 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2024 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2023 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2022 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2021 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2020 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2019 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2018 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2017 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2016 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2015 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2014 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2013 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2012 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2011 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2010 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2009 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2008 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2007 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2006 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2005 -----
- December
April 2008
- 36 participants
- 102 discussions
17 Apr '08
A long time ago I proposed a syntax for serial / parallel port handling
in libvirt XML.
http://www.redhat.com/archives/libvir-list/2007-May/msg00191.html
Currently, Xen uses this for input:
<console tty='pty'/>
And when the guest is active, this comes out as:
<console tty='/dev/pts/2'/>
In PV guests this refers to the xvc0 console, and in FV guests this enables
the first serial port in 'pty' mode. QEMU serial devices support many more
options though, and also parallel ports.
Thus I propose to add the following new syntax which is slightly tweaked
from my original mail:
- For a Psuedo-TTY:
NB. the source tag is output only, since TTYs are autoallocated
<serial type='pty'>
<source path='/dev/pts/1'/>
<target port='0'/>
</serial>
- Passthrough to areal host serial device:
<serial type='dev'>
<source path='/dev/ttyS2'/>
<target port='0'/>
</serial>
- Log output data to a file, no input:
<serial type='file'>
<source path='/tmp/serial.log'/>
<target port='0'/>
</serial>
- Run a TCP server and wait for clients to connect, using telnet
protocol over wire:
<serial type='tcp'>
<source mode='bind' host='127.0.0.1' service='9999' wiremode='telnet'/>
<target port='0'/>
</serial>
- Run a TCP client connecting to a remote host to send data in
raw format:
<serial type='tcp'>
<source mode='connect' host='127.0.0.1' service='9999' wiremode='raw'/>
<target port='0'/>
</serial>
- Run a UDP netconsole facility - nb use of 2 sources so it can both
send and receive data. For output only, the mode=bind source can
be omitted.
<serial type='udp'>
<source mode='bind' host='127.0.0.1' service='9999'/>
<source mode='connect' host='127.0.0.1' service='9998'/>
<target port='0'/>
</serial>
- Run a UNIX socket server
<serial type='unix'>
<source mode='bind' path='/tmp/serial.sock'/>
<target port='0'/>
</serial>
- Run a QEMU virtual console accessible via Ctrl+Alt+'n'
<serial type='vc'>
<target port='0'/>
</serial>
In all these examples the '<target>' tag is an output only element for QEMU
really just there to give an explicit device ordering. It is possible it
might be extended in future to allow specifiction of type of serial device
hardware to emulate, or some such idea.
WRT to the <console> tag, if the application defines a VM with a single
<console/>
tag this will be converted into a <serial type="pty"/> tag. When dumping
XML, if the first serial device has type='pty', then a <console> tag will
be included in the XML dump. This gives compatability with existing tools
which know how to deal with <console> tag.
This format described above will also be pretty much 100% applicable to
the Xen driver, but I've not done the code for that yet. VMWare allows
use of serial/parallel ports, but only enables logging to a file. So we
can trivially cope with VMWare config via type="file".
Finally I've not actaully hooked up the code to determine the path to the
Psuedo-TTY which is auto-allocated at startup. So type="pty" isn't useful
in this patch yet.
Dan.
Index: src/qemu_conf.c
===================================================================
RCS file: /data/cvs/libvirt/src/qemu_conf.c,v
retrieving revision 1.48
diff -u -p -r1.48 qemu_conf.c
--- src/qemu_conf.c 10 Apr 2008 16:54:54 -0000 1.48
+++ src/qemu_conf.c 15 Apr 2008 21:31:32 -0000
@@ -205,6 +205,8 @@ void qemudFreeVMDef(struct qemud_vm_def
struct qemud_vm_disk_def *disk = def->disks;
struct qemud_vm_net_def *net = def->nets;
struct qemud_vm_input_def *input = def->inputs;
+ struct qemud_vm_chr_def *serial = def->serials;
+ struct qemud_vm_chr_def *parallel = def->parallels;
while (disk) {
struct qemud_vm_disk_def *prev = disk;
@@ -221,6 +223,16 @@ void qemudFreeVMDef(struct qemud_vm_def
input = input->next;
free(prev);
}
+ while (serial) {
+ struct qemud_vm_chr_def *prev = serial;
+ serial = serial->next;
+ free(prev);
+ }
+ while (parallel) {
+ struct qemud_vm_chr_def *prev = parallel;
+ parallel = parallel->next;
+ free(prev);
+ }
xmlFree(def->keymap);
free(def);
}
@@ -945,6 +957,334 @@ static int qemudParseInterfaceXML(virCon
}
+/* Parse the XML definition for a character device
+ * @param net pre-allocated & zero'd net record
+ * @param node XML nodeset to parse for net definition
+ * @return 0 on success, -1 on failure
+ *
+ * The XML we're dealing with looks like
+ *
+ * <serial type="pty">
+ * <source path="/dev/pts/3"/>
+ * <target port="1"/>
+ * </serial>
+ *
+ * <serial type="dev">
+ * <source path="/dev/ttyS0"/>
+ * <target port="1"/>
+ * </serial>
+ *
+ * <serial type="tcp">
+ * <source mode="connect" host="0.0.0.0" service="2445"/>
+ * <target port="1"/>
+ * </serial>
+ *
+ * <serial type="tcp">
+ * <source mode="bind" host="0.0.0.0" service="2445"/>
+ * <target port="1"/>
+ * </serial>
+ *
+ * <serial type="udp">
+ * <source mode="bind" host="0.0.0.0" service="2445"/>
+ * <source mode="connect" host="0.0.0.0" service="2445"/>
+ * <target port="1"/>
+ * </serial>
+ *
+ * <serial type="unix">
+ * <source mode="bind" path="/tmp/foo"/>
+ * <target port="1"/>
+ * </serial>
+ *
+ */
+static int qemudParseCharXML(virConnectPtr conn,
+ struct qemud_vm_chr_def *chr,
+ int portNum,
+ xmlNodePtr node) {
+ xmlNodePtr cur;
+ xmlChar *type = NULL;
+ xmlChar *bindHost = NULL;
+ xmlChar *bindService = NULL;
+ xmlChar *connectHost = NULL;
+ xmlChar *connectService = NULL;
+ xmlChar *path = NULL;
+ xmlChar *mode = NULL;
+ xmlChar *wiremode = NULL;
+ int ret = -1;
+
+ chr->srcType = QEMUD_CHR_SRC_TYPE_PTY;
+ type = xmlGetProp(node, BAD_CAST "type");
+ if (type != NULL) {
+ if (xmlStrEqual(type, BAD_CAST "null"))
+ chr->srcType = QEMUD_CHR_SRC_TYPE_NULL;
+ else if (xmlStrEqual(type, BAD_CAST "vc"))
+ chr->srcType = QEMUD_CHR_SRC_TYPE_VC;
+ else if (xmlStrEqual(type, BAD_CAST "pty"))
+ chr->srcType = QEMUD_CHR_SRC_TYPE_PTY;
+ else if (xmlStrEqual(type, BAD_CAST "dev"))
+ chr->srcType = QEMUD_CHR_SRC_TYPE_DEV;
+ else if (xmlStrEqual(type, BAD_CAST "file"))
+ chr->srcType = QEMUD_CHR_SRC_TYPE_FILE;
+ else if (xmlStrEqual(type, BAD_CAST "pipe"))
+ chr->srcType = QEMUD_CHR_SRC_TYPE_PIPE;
+ else if (xmlStrEqual(type, BAD_CAST "stdio"))
+ chr->srcType = QEMUD_CHR_SRC_TYPE_STDIO;
+ else if (xmlStrEqual(type, BAD_CAST "udp"))
+ chr->srcType = QEMUD_CHR_SRC_TYPE_UDP;
+ else if (xmlStrEqual(type, BAD_CAST "tcp"))
+ chr->srcType = QEMUD_CHR_SRC_TYPE_TCP;
+ else if (xmlStrEqual(type, BAD_CAST "unix"))
+ chr->srcType = QEMUD_CHR_SRC_TYPE_UNIX;
+ else
+ chr->srcType = QEMUD_CHR_SRC_TYPE_NULL;
+ }
+
+ cur = node->children;
+ while (cur != NULL) {
+ if (cur->type == XML_ELEMENT_NODE) {
+ if (xmlStrEqual(cur->name, BAD_CAST "source")) {
+ if (mode == NULL)
+ mode = xmlGetProp(cur, BAD_CAST "mode");
+
+ switch (chr->srcType) {
+ case QEMUD_CHR_SRC_TYPE_PTY:
+ case QEMUD_CHR_SRC_TYPE_DEV:
+ case QEMUD_CHR_SRC_TYPE_FILE:
+ case QEMUD_CHR_SRC_TYPE_PIPE:
+ case QEMUD_CHR_SRC_TYPE_UNIX:
+ if (path == NULL)
+ path = xmlGetProp(cur, BAD_CAST "path");
+
+ break;
+
+ case QEMUD_CHR_SRC_TYPE_UDP:
+ case QEMUD_CHR_SRC_TYPE_TCP:
+ if (mode == NULL ||
+ STREQ((const char *)mode, "connect")) {
+
+ if (connectHost == NULL)
+ connectHost = xmlGetProp(cur, BAD_CAST "host");
+ if (connectService == NULL)
+ connectService = xmlGetProp(cur, BAD_CAST "service");
+ } else {
+ if (bindHost == NULL)
+ bindHost = xmlGetProp(cur, BAD_CAST "host");
+ if (bindService == NULL)
+ bindService = xmlGetProp(cur, BAD_CAST "service");
+ }
+
+ if (chr->srcType == QEMUD_CHR_SRC_TYPE_TCP)
+ wiremode = xmlGetProp(cur, BAD_CAST "wiremode");
+
+ if (chr->srcType == QEMUD_CHR_SRC_TYPE_UDP) {
+ xmlFree(mode);
+ mode = NULL;
+ }
+ }
+ }
+ }
+ cur = cur->next;
+ }
+
+
+ chr->dstPort = portNum;
+
+ switch (chr->srcType) {
+ case QEMUD_CHR_SRC_TYPE_NULL:
+ /* Nada */
+ break;
+
+ case QEMUD_CHR_SRC_TYPE_VC:
+ break;
+
+ case QEMUD_CHR_SRC_TYPE_PTY:
+ /* @path attribute is an output only property - pty is auto-allocted */
+ break;
+
+ case QEMUD_CHR_SRC_TYPE_DEV:
+ case QEMUD_CHR_SRC_TYPE_FILE:
+ case QEMUD_CHR_SRC_TYPE_PIPE:
+ if (path == NULL) {
+ qemudReportError(conn, NULL, NULL, VIR_ERR_INTERNAL_ERROR,
+ "%s", _("Missing source path attribute for char device"));
+ goto cleanup;
+ }
+
+ strncpy(chr->srcData.file.path, (const char *)path,
+ sizeof(chr->srcData.file.path));
+ chr->srcData.file.path[sizeof(chr->srcData.file.path)-1] = '\0';
+ break;
+
+ case QEMUD_CHR_SRC_TYPE_STDIO:
+ /* Nada */
+ break;
+
+ case QEMUD_CHR_SRC_TYPE_TCP:
+ if (mode == NULL ||
+ STREQ((const char *)mode, "connect")) {
+ if (connectHost == NULL) {
+ qemudReportError(conn, NULL, NULL, VIR_ERR_INTERNAL_ERROR,
+ "%s", _("Missing source host attribute for char device"));
+ goto cleanup;
+ }
+ if (connectService == NULL) {
+ qemudReportError(conn, NULL, NULL, VIR_ERR_INTERNAL_ERROR,
+ "%s", _("Missing source service attribute for char device"));
+ goto cleanup;
+ }
+
+ strncpy(chr->srcData.tcp.host, (const char *)connectHost,
+ sizeof(chr->srcData.tcp.host));
+ chr->srcData.tcp.host[sizeof(chr->srcData.tcp.host)-1] = '\0';
+ strncpy(chr->srcData.tcp.service, (const char *)connectService,
+ sizeof(chr->srcData.tcp.service));
+ chr->srcData.tcp.service[sizeof(chr->srcData.tcp.service)-1] = '\0';
+
+ chr->srcData.tcp.listen = 0;
+ } else {
+ if (bindHost == NULL) {
+ qemudReportError(conn, NULL, NULL, VIR_ERR_INTERNAL_ERROR,
+ "%s", _("Missing source host attribute for char device"));
+ goto cleanup;
+ }
+ if (bindService == NULL) {
+ qemudReportError(conn, NULL, NULL, VIR_ERR_INTERNAL_ERROR,
+ "%s", _("Missing source service attribute for char device"));
+ goto cleanup;
+ }
+
+ strncpy(chr->srcData.tcp.host, (const char *)bindHost,
+ sizeof(chr->srcData.tcp.host));
+ chr->srcData.tcp.host[sizeof(chr->srcData.tcp.host)-1] = '\0';
+ strncpy(chr->srcData.tcp.service, (const char *)bindService,
+ sizeof(chr->srcData.tcp.service));
+ chr->srcData.tcp.service[sizeof(chr->srcData.tcp.service)-1] = '\0';
+
+ chr->srcData.tcp.listen = 1;
+ }
+ if (wiremode != NULL &&
+ STREQ((const char *)wiremode, "telnet"))
+ chr->srcData.tcp.wiremode = QEMUD_CHR_SRC_TCP_WIRE_MODE_TELNET;
+ else
+ chr->srcData.tcp.wiremode = QEMUD_CHR_SRC_TCP_WIRE_MODE_RAW;
+ break;
+
+ case QEMUD_CHR_SRC_TYPE_UDP:
+ if (connectService == NULL) {
+ qemudReportError(conn, NULL, NULL, VIR_ERR_INTERNAL_ERROR,
+ "%s", _("Missing source service attribute for char device"));
+ goto cleanup;
+ }
+
+ if (connectHost != NULL) {
+ strncpy(chr->srcData.udp.connectHost, (const char *)connectHost,
+ sizeof(chr->srcData.udp.connectHost));
+ chr->srcData.udp.connectHost[sizeof(chr->srcData.udp.connectHost)-1] = '\0';
+ }
+ strncpy(chr->srcData.udp.connectService, (const char *)connectService,
+ sizeof(chr->srcData.udp.connectService));
+ chr->srcData.udp.connectService[sizeof(chr->srcData.udp.connectService)-1] = '\0';
+
+ if (bindHost != NULL) {
+ strncpy(chr->srcData.udp.bindHost, (const char *)bindHost,
+ sizeof(chr->srcData.udp.bindHost));
+ chr->srcData.udp.bindHost[sizeof(chr->srcData.udp.bindHost)-1] = '\0';
+ }
+ if (bindService != NULL) {
+ strncpy(chr->srcData.udp.bindService, (const char *)bindService,
+ sizeof(chr->srcData.udp.bindService));
+ chr->srcData.udp.bindService[sizeof(chr->srcData.udp.bindService)-1] = '\0';
+ }
+ break;
+
+ case QEMUD_CHR_SRC_TYPE_UNIX:
+ if (path == NULL) {
+ qemudReportError(conn, NULL, NULL, VIR_ERR_INTERNAL_ERROR,
+ "%s", _("Missing source path attribute for char device"));
+ goto cleanup;
+ }
+
+ if (mode != NULL &&
+ STRNEQ((const char *)mode, "connect"))
+ chr->srcData.nix.listen = 1;
+ else
+ chr->srcData.nix.listen = 0;
+
+ strncpy(chr->srcData.nix.path, (const char *)path,
+ sizeof(chr->srcData.nix.path));
+ chr->srcData.nix.path[sizeof(chr->srcData.nix.path)-1] = '\0';
+ break;
+ }
+
+ ret = 0;
+
+cleanup:
+ xmlFree(mode);
+ xmlFree(wiremode);
+ xmlFree(type);
+ xmlFree(bindHost);
+ xmlFree(bindService);
+ xmlFree(connectHost);
+ xmlFree(connectService);
+ xmlFree(path);
+
+ return ret;
+}
+
+
+static int qemudParseCharXMLDevices(virConnectPtr conn,
+ xmlXPathContextPtr ctxt,
+ const char *xpath,
+ int *ndevs,
+ struct qemud_vm_chr_def **devs)
+{
+ xmlXPathObjectPtr obj;
+ int i;
+
+ obj = xmlXPathEval(BAD_CAST xpath, ctxt);
+ if ((obj != NULL) && (obj->type == XPATH_NODESET) &&
+ (obj->nodesetval != NULL) && (obj->nodesetval->nodeNr >= 0)) {
+ struct qemud_vm_chr_def *prev = *devs;
+ if (ndevs == NULL &&
+ obj->nodesetval->nodeNr > 1) {
+ qemudReportError(conn, NULL, NULL, VIR_ERR_INTERNAL_ERROR,
+ "%s", _("too many character devices"));
+ goto error;
+ }
+
+ for (i = 0; i < obj->nodesetval->nodeNr; i++) {
+ struct qemud_vm_chr_def *chr = calloc(1, sizeof(*chr));
+ if (!chr) {
+ qemudReportError(conn, NULL, NULL, VIR_ERR_NO_MEMORY,
+ "%s",
+ _("failed to allocate space for char device"));
+ goto error;
+ }
+
+ if (qemudParseCharXML(conn, chr, i, obj->nodesetval->nodeTab[i]) < 0) {
+ free(chr);
+ goto error;
+ }
+ if (ndevs)
+ (*ndevs)++;
+ chr->next = NULL;
+ if (i == 0) {
+ *devs = chr;
+ } else {
+ prev->next = chr;
+ }
+ prev = chr;
+ }
+ }
+ xmlXPathFreeObject(obj);
+
+ return 0;
+
+error:
+ xmlXPathFreeObject(obj);
+ return -1;
+}
+
+
/* Parse the XML definition for a network interface */
static int qemudParseInputXML(virConnectPtr conn,
struct qemud_vm_input_def *input,
@@ -1423,6 +1763,41 @@ static struct qemud_vm_def *qemudParseXM
}
}
xmlXPathFreeObject(obj);
+ obj = NULL;
+
+ /* analysis of the character devices */
+ if (qemudParseCharXMLDevices(conn, ctxt,
+ "/domain/devices/parallel",
+ &def->nparallels,
+ &def->parallels) < 0)
+ goto error;
+ if (qemudParseCharXMLDevices(conn, ctxt,
+ "/domain/devices/serial",
+ &def->nserials,
+ &def->serials) < 0)
+ goto error;
+
+ /*
+ * If no serial devices were listed, then look for console
+ * devices which is the legacy syntax for the same thing
+ */
+ if (def->nserials == 0) {
+ obj = xmlXPathEval(BAD_CAST "/domain/devices/console", ctxt);
+ if ((obj != NULL) && (obj->type == XPATH_NODESET) &&
+ (obj->nodesetval != NULL) && (obj->nodesetval->nodeNr == 1)) {
+ struct qemud_vm_chr_def *serial = calloc(1, sizeof(*serial));
+ if (!serial) {
+ qemudReportError(conn, NULL, NULL, VIR_ERR_NO_MEMORY,
+ "%s", _("failed to allocate space for serial device"));
+ goto error;
+ }
+ serial->srcType = QEMUD_CHR_SRC_TYPE_PTY;
+
+ def->serials = serial;
+ def->nserials = 1;
+ }
+ xmlXPathFreeObject(obj);
+ }
/* analysis of the network devices */
@@ -1617,6 +1992,78 @@ qemudNetworkIfaceConnect(virConnectPtr c
return NULL;
}
+static int qemudBuildCommandLineChrDevStr(struct qemud_vm_chr_def *dev,
+ char *buf,
+ int buflen)
+{
+ switch (dev->srcType) {
+ case QEMUD_CHR_SRC_TYPE_NULL:
+ strncpy(buf, "null", buflen);
+ buf[buflen-1] = '\0';
+ break;
+
+ case QEMUD_CHR_SRC_TYPE_VC:
+ strncpy(buf, "vc", buflen);
+ buf[buflen-1] = '\0';
+ break;
+
+ case QEMUD_CHR_SRC_TYPE_PTY:
+ strncpy(buf, "pty", buflen);
+ buf[buflen-1] = '\0';
+ break;
+
+ case QEMUD_CHR_SRC_TYPE_DEV:
+ if (snprintf(buf, buflen, "%s",
+ dev->srcData.file.path) >= buflen)
+ return -1;
+ break;
+
+ case QEMUD_CHR_SRC_TYPE_FILE:
+ if (snprintf(buf, buflen, "file:%s",
+ dev->srcData.file.path) >= buflen)
+ return -1;
+ break;
+
+ case QEMUD_CHR_SRC_TYPE_PIPE:
+ if (snprintf(buf, buflen, "pipe:%s",
+ dev->srcData.file.path) >= buflen)
+ return -1;
+ break;
+
+ case QEMUD_CHR_SRC_TYPE_STDIO:
+ strncpy(buf, "stdio", buflen);
+ buf[buflen-1] = '\0';
+ break;
+
+ case QEMUD_CHR_SRC_TYPE_UDP:
+ if (snprintf(buf, buflen, "udp:%s:%s@%s:%s",
+ dev->srcData.udp.connectHost,
+ dev->srcData.udp.connectService,
+ dev->srcData.udp.bindHost,
+ dev->srcData.udp.bindService) >= buflen)
+ return -1;
+ break;
+
+ case QEMUD_CHR_SRC_TYPE_TCP:
+ if (snprintf(buf, buflen, "%s:%s:%s%s",
+ dev->srcData.tcp.wiremode == QEMUD_CHR_SRC_TCP_WIRE_MODE_TELNET ? "telnet" : "tcp",
+ dev->srcData.tcp.host,
+ dev->srcData.tcp.service,
+ dev->srcData.tcp.listen ? ",listen" : "") >= buflen)
+ return -1;
+ break;
+
+ case QEMUD_CHR_SRC_TYPE_UNIX:
+ if (snprintf(buf, buflen, "unix:%s%s",
+ dev->srcData.nix.path,
+ dev->srcData.nix.listen ? ",listen" : "") >= buflen)
+ return -1;
+ break;
+ }
+
+ return 0;
+}
+
/*
* Constructs a argv suitable for launching qemu with config defined
* for a given virtual machine.
@@ -1633,6 +2080,8 @@ int qemudBuildCommandLine(virConnectPtr
struct qemud_vm_disk_def *disk = vm->def->disks;
struct qemud_vm_net_def *net = vm->def->nets;
struct qemud_vm_input_def *input = vm->def->inputs;
+ struct qemud_vm_chr_def *serial = vm->def->serials;
+ struct qemud_vm_chr_def *parallel = vm->def->parallels;
struct utsname ut;
int disableKQEMU = 0;
@@ -1681,6 +2130,8 @@ int qemudBuildCommandLine(virConnectPtr
(vm->def->nnets > 0 ? (4 * vm->def->nnets) : 2) + /* networks */
1 + /* usb */
2 * vm->def->ninputs + /* input devices */
+ (vm->def->nserials > 0 ? (2 * vm->def->nserials) : 2) + /* character devices */
+ (vm->def->nparallels > 0 ? (2 * vm->def->nparallels) : 2) + /* character devices */
2 + /* memory*/
2 + /* cpus */
2 + /* boot device */
@@ -1913,6 +2364,48 @@ int qemudBuildCommandLine(virConnectPtr
}
}
+ if (!serial) {
+ if (!((*argv)[++n] = strdup("-serial")))
+ goto no_memory;
+ if (!((*argv)[++n] = strdup("none")))
+ goto no_memory;
+ } else {
+ while (serial) {
+ char buf[4096];
+
+ if (qemudBuildCommandLineChrDevStr(serial, buf, sizeof(buf)) < 0)
+ goto error;
+
+ if (!((*argv)[++n] = strdup("-serial")))
+ goto no_memory;
+ if (!((*argv)[++n] = strdup(buf)))
+ goto no_memory;
+
+ serial = serial->next;
+ }
+ }
+
+ if (!parallel) {
+ if (!((*argv)[++n] = strdup("-parallel")))
+ goto no_memory;
+ if (!((*argv)[++n] = strdup("none")))
+ goto no_memory;
+ } else {
+ while (parallel) {
+ char buf[4096];
+
+ if (qemudBuildCommandLineChrDevStr(parallel, buf, sizeof(buf)) < 0)
+ goto error;
+
+ if (!((*argv)[++n] = strdup("-parallel")))
+ goto no_memory;
+ if (!((*argv)[++n] = strdup(buf)))
+ goto no_memory;
+
+ parallel = parallel->next;
+ }
+ }
+
if (!((*argv)[++n] = strdup("-usb")))
goto no_memory;
while (input) {
@@ -2838,6 +3331,110 @@ int qemudScanConfigs(struct qemud_driver
return 0;
}
+static int qemudGenerateXMLChar(virBufferPtr buf,
+ struct qemud_vm_chr_def *dev,
+ const char *type)
+{
+ const char *types[] = {
+ "null",
+ "vc",
+ "pty",
+ "dev",
+ "file",
+ "pipe",
+ "stdio",
+ "udp",
+ "tcp",
+ "unix"
+ };
+ if (virBufferVSprintf(buf, " <%s type='%s'>\n",
+ type, types[dev->srcType]) < 0)
+ return -1;
+
+ switch (dev->srcType) {
+ case QEMUD_CHR_SRC_TYPE_NULL:
+ case QEMUD_CHR_SRC_TYPE_VC:
+ case QEMUD_CHR_SRC_TYPE_STDIO:
+ /* nada */
+ break;
+
+ case QEMUD_CHR_SRC_TYPE_PTY:
+ case QEMUD_CHR_SRC_TYPE_DEV:
+ case QEMUD_CHR_SRC_TYPE_FILE:
+ case QEMUD_CHR_SRC_TYPE_PIPE:
+ if (dev->srcType != QEMUD_CHR_SRC_TYPE_PTY ||
+ dev->srcData.file.path[0]) {
+ if (virBufferVSprintf(buf, " <source path='%s'/>\n",
+ dev->srcData.file.path) < 0)
+ return -1;
+ }
+ break;
+
+ case QEMUD_CHR_SRC_TYPE_UDP:
+ if (dev->srcData.udp.bindService[0] != '\0' &&
+ dev->srcData.udp.bindHost[0] != '\0') {
+ if (virBufferVSprintf(buf, " <source mode='bind' host='%s' service='%s'/>\n",
+ dev->srcData.udp.bindHost,
+ dev->srcData.udp.bindService) < 0)
+ return -1;
+ } else if (dev->srcData.udp.bindHost[0] !='\0') {
+ if (virBufferVSprintf(buf, " <source mode='bind' host='%s'/>\n",
+ dev->srcData.udp.bindHost) < 0)
+ return -1;
+ } else if (dev->srcData.udp.bindService[0] != '\0') {
+ if (virBufferVSprintf(buf, " <source mode='bind' service='%s'/>\n",
+ dev->srcData.udp.bindService) < 0)
+ return -1;
+ }
+
+ if (dev->srcData.udp.connectService[0] != '\0' &&
+ dev->srcData.udp.connectHost[0] != '\0') {
+ if (virBufferVSprintf(buf, " <source mode='connect' host='%s' service='%s'/>\n",
+ dev->srcData.udp.connectHost,
+ dev->srcData.udp.connectService) < 0)
+ return -1;
+ } else if (dev->srcData.udp.connectHost[0] != '\0') {
+ if (virBufferVSprintf(buf, " <source mode='connect' host='%s'/>\n",
+ dev->srcData.udp.connectHost) < 0)
+ return -1;
+ } else if (dev->srcData.udp.connectService[0] != '\0') {
+ if (virBufferVSprintf(buf, " <source mode='connect' service='%s'/>\n",
+ dev->srcData.udp.connectService) < 0)
+ return -1;
+ }
+
+ break;
+
+ case QEMUD_CHR_SRC_TYPE_TCP:
+ if (virBufferVSprintf(buf, " <source mode='%s' host='%s' service='%s' wiremode='%s'/>\n",
+ dev->srcData.tcp.listen ? "bind" : "connect",
+ dev->srcData.tcp.host,
+ dev->srcData.tcp.service,
+ dev->srcData.tcp.wiremode == QEMUD_CHR_SRC_TCP_WIRE_MODE_TELNET
+ ? "telnet" : "raw") < 0)
+ return -1;
+ break;
+
+ case QEMUD_CHR_SRC_TYPE_UNIX:
+ if (virBufferVSprintf(buf, " <source mode='%s' path='%s'/>\n",
+ dev->srcData.nix.listen ? "bind" : "connect",
+ dev->srcData.nix.path) < 0)
+ return -1;
+ break;
+ }
+
+ if (virBufferVSprintf(buf, " <target port='%d'/>\n",
+ dev->dstPort) < 0)
+ return -1;
+
+ if (virBufferVSprintf(buf, " </%s>\n",
+ type) < 0)
+ return -1;
+
+ return 0;
+}
+
+
/* Generate an XML document describing the guest's configuration */
char *qemudGenerateXML(virConnectPtr conn,
struct qemud_driver *driver ATTRIBUTE_UNUSED,
@@ -2850,6 +3447,7 @@ char *qemudGenerateXML(virConnectPtr con
struct qemud_vm_disk_def *disk;
struct qemud_vm_net_def *net;
struct qemud_vm_input_def *input;
+ struct qemud_vm_chr_def *chr;
const char *type = NULL;
int n;
@@ -3078,6 +3676,30 @@ char *qemudGenerateXML(virConnectPtr con
net = net->next;
}
+ chr = def->serials;
+ while (chr) {
+ if (qemudGenerateXMLChar(buf, chr, "serial") < 0)
+ goto no_memory;
+
+ chr = chr->next;
+ }
+
+ chr = def->parallels;
+ while (chr) {
+ if (qemudGenerateXMLChar(buf, chr, "parallel") < 0)
+ goto no_memory;
+
+ chr = chr->next;
+ }
+
+ if (def->nserials > 0 &&
+ def->serials->srcType == QEMUD_CHR_SRC_TYPE_PTY) {
+ if (virBufferVSprintf(buf, " <console tty='%s'/>\n",
+ def->serials->srcData.file.path[0] ?
+ def->serials->srcData.file.path : "pty") < 0)
+ goto no_memory;
+ }
+
input = def->inputs;
while (input) {
if (input->bus != QEMU_INPUT_BUS_PS2 &&
@@ -3125,9 +3747,6 @@ char *qemudGenerateXML(virConnectPtr con
break;
}
- if (def->graphicsType == QEMUD_GRAPHICS_VNC) {
- }
-
if (virBufferAddLit(buf, " </devices>\n") < 0)
goto no_memory;
Index: src/qemu_conf.h
===================================================================
RCS file: /data/cvs/libvirt/src/qemu_conf.h,v
retrieving revision 1.22
diff -u -p -r1.22 qemu_conf.h
--- src/qemu_conf.h 10 Apr 2008 16:53:29 -0000 1.22
+++ src/qemu_conf.h 15 Apr 2008 21:31:32 -0000
@@ -119,6 +119,52 @@ struct qemud_vm_net_def {
struct qemud_vm_net_def *next;
};
+enum qemu_vm_chr_dst_type {
+ QEMUD_CHR_SRC_TYPE_NULL,
+ QEMUD_CHR_SRC_TYPE_VC,
+ QEMUD_CHR_SRC_TYPE_PTY,
+ QEMUD_CHR_SRC_TYPE_DEV,
+ QEMUD_CHR_SRC_TYPE_FILE,
+ QEMUD_CHR_SRC_TYPE_PIPE,
+ QEMUD_CHR_SRC_TYPE_STDIO,
+ QEMUD_CHR_SRC_TYPE_UDP,
+ QEMUD_CHR_SRC_TYPE_TCP,
+ QEMUD_CHR_SRC_TYPE_UNIX,
+};
+
+enum {
+ QEMUD_CHR_SRC_TCP_WIRE_MODE_RAW,
+ QEMUD_CHR_SRC_TCP_WIRE_MODE_TELNET,
+};
+
+struct qemud_vm_chr_def {
+ int dstPort;
+
+ int srcType;
+ union {
+ struct {
+ char path[PATH_MAX];
+ } file; /* pty, file, pipe, or device */
+ struct {
+ char host[BR_INET_ADDR_MAXLEN];
+ char service[BR_INET_ADDR_MAXLEN];
+ int listen;
+ int wiremode;
+ } tcp;
+ struct {
+ char bindHost[BR_INET_ADDR_MAXLEN];
+ char bindService[BR_INET_ADDR_MAXLEN];
+ char connectHost[BR_INET_ADDR_MAXLEN];
+ char connectService[BR_INET_ADDR_MAXLEN];
+ } udp;
+ struct {
+ char path[PATH_MAX];
+ int listen;
+ } nix;
+ } srcData;
+
+ struct qemud_vm_chr_def *next;
+};
enum qemu_vm_input_type {
QEMU_INPUT_TYPE_MOUSE,
@@ -223,6 +269,12 @@ struct qemud_vm_def {
int ninputs;
struct qemud_vm_input_def *inputs;
+
+ int nserials;
+ struct qemud_vm_chr_def *serials;
+
+ int nparallels;
+ struct qemud_vm_chr_def *parallels;
};
/* Guest VM runtime state */
Index: tests/Makefile.am
===================================================================
RCS file: /data/cvs/libvirt/tests/Makefile.am,v
retrieving revision 1.40
diff -u -p -r1.40 Makefile.am
--- tests/Makefile.am 8 Apr 2008 15:33:17 -0000 1.40
+++ tests/Makefile.am 15 Apr 2008 21:31:32 -0000
@@ -66,6 +66,8 @@ path_add = $$abs_top_builddir/src$(PATH_
TESTS_ENVIRONMENT = \
abs_top_builddir=`cd '$(top_builddir)'; pwd` \
abs_top_srcdir=`cd '$(top_srcdir)'; pwd` \
+ abs_builddir=`cd '$(builddir)'; pwd` \
+ abs_srcdir=`cd '$(srcdir)'; pwd` \
PATH="$(path_add)$(PATH_SEPARATOR)$$PATH" \
SHELL="$(SHELL)" \
$(VG)
Index: tests/qemuxml2argvtest.c
===================================================================
RCS file: /data/cvs/libvirt/tests/qemuxml2argvtest.c,v
retrieving revision 1.14
diff -u -p -r1.14 qemuxml2argvtest.c
--- tests/qemuxml2argvtest.c 10 Apr 2008 16:53:29 -0000 1.14
+++ tests/qemuxml2argvtest.c 15 Apr 2008 21:31:32 -0000
@@ -15,7 +15,7 @@
#include "qemu_conf.h"
static char *progname;
-static char *abs_top_srcdir;
+static char *abs_srcdir;
static struct qemud_driver driver;
#define MAX_FILE 4096
@@ -100,10 +100,10 @@ static int testCompareXMLToArgvFiles(con
static int testCompareXMLToArgvHelper(const void *data) {
char xml[PATH_MAX];
char args[PATH_MAX];
- snprintf(xml, PATH_MAX, "%s/tests/qemuxml2argvdata/qemuxml2argv-%s.xml",
- abs_top_srcdir, (const char*)data);
- snprintf(args, PATH_MAX, "%s/tests/qemuxml2argvdata/qemuxml2argv-%s.args",
- abs_top_srcdir, (const char*)data);
+ snprintf(xml, PATH_MAX, "%s/qemuxml2argvdata/qemuxml2argv-%s.xml",
+ abs_srcdir, (const char*)data);
+ snprintf(args, PATH_MAX, "%s/qemuxml2argvdata/qemuxml2argv-%s.args",
+ abs_srcdir, (const char*)data);
return testCompareXMLToArgvFiles(xml, args);
}
@@ -113,6 +113,7 @@ int
main(int argc, char **argv)
{
int ret = 0;
+ char cwd[PATH_MAX];
progname = argv[0];
@@ -121,76 +122,45 @@ main(int argc, char **argv)
exit(EXIT_FAILURE);
}
- abs_top_srcdir = getenv("abs_top_srcdir");
- if (!abs_top_srcdir)
- return 1;
+ abs_srcdir = getenv("abs_srcdir");
+ if (!abs_srcdir)
+ abs_srcdir = getcwd(cwd, sizeof(cwd));
driver.caps = qemudCapsInit();
- if (virtTestRun("QEMU XML-2-ARGV minimal",
- 1, testCompareXMLToArgvHelper, "minimal") < 0)
- ret = -1;
-
- if (virtTestRun("QEMU XML-2-ARGV Boot CDROM",
- 1, testCompareXMLToArgvHelper, "boot-cdrom") < 0)
- ret = -1;
-
- if (virtTestRun("QEMU XML-2-ARGV Boot Network",
- 1, testCompareXMLToArgvHelper, "boot-network") < 0)
- ret = -1;
-
- if (virtTestRun("QEMU XML-2-ARGV Boot Floppy",
- 1, testCompareXMLToArgvHelper, "boot-floppy") < 0)
- ret = -1;
-
- if (virtTestRun("QEMU XML-2-ARGV Clock UTC",
- 1, testCompareXMLToArgvHelper, "clock-utc") < 0)
- ret = -1;
-
- if (virtTestRun("QEMU XML-2-ARGV Clock Localtime",
- 1, testCompareXMLToArgvHelper, "clock-localtime") < 0)
- ret = -1;
-
- if (virtTestRun("QEMU XML-2-ARGV Disk CDROM",
- 1, testCompareXMLToArgvHelper, "disk-cdrom") < 0)
- ret = -1;
-
- if (virtTestRun("QEMU XML-2-ARGV Disk Floppy",
- 1, testCompareXMLToArgvHelper, "disk-floppy") < 0)
- ret = -1;
-
- if (virtTestRun("QEMU XML-2-ARGV Disk Many",
- 1, testCompareXMLToArgvHelper, "disk-many") < 0)
- ret = -1;
-
- if (virtTestRun("QEMU XML-2-ARGV Graphics VNC",
- 1, testCompareXMLToArgvHelper, "graphics-vnc") < 0)
- ret = -1;
-
- if (virtTestRun("QEMU XML-2-ARGV Graphics SDL",
- 1, testCompareXMLToArgvHelper, "graphics-sdl") < 0)
- ret = -1;
-
- if (virtTestRun("QEMU XML-2-ARGV Input USB Mouse",
- 1, testCompareXMLToArgvHelper, "input-usbmouse") < 0)
- ret = -1;
-
- if (virtTestRun("QEMU XML-2-ARGV Input USB Tablet",
- 1, testCompareXMLToArgvHelper, "input-usbtablet") < 0)
- ret = -1;
-
- if (virtTestRun("QEMU XML-2-ARGV Misc ACPI",
- 1, testCompareXMLToArgvHelper, "misc-acpi") < 0)
- ret = -1;
-
- if (virtTestRun("QEMU XML-2-ARGV Misc No Reboot",
- 1, testCompareXMLToArgvHelper, "misc-no-reboot") < 0)
- ret = -1;
-
- if (virtTestRun("QEMU XML-2-ARGV Net User",
- 1, testCompareXMLToArgvHelper, "net-user") < 0)
- ret = -1;
-
+#define DO_TEST(name) \
+ if (virtTestRun("QEMU XML-2-ARGV " name, \
+ 1, testCompareXMLToArgvHelper, (name)) < 0) \
+ ret = -1
+
+ DO_TEST("minimal");
+ DO_TEST("boot-cdrom");
+ DO_TEST("boot-network");
+ DO_TEST("boot-floppy");
+ DO_TEST("clock-utc");
+ DO_TEST("clock-localtime");
+ DO_TEST("disk-cdrom");
+ DO_TEST("disk-floppy");
+ DO_TEST("disk-many");
+ DO_TEST("graphics-vnc");
+ DO_TEST("graphics-sdl");
+ DO_TEST("input-usbmouse");
+ DO_TEST("input-usbtablet");
+ DO_TEST("misc-acpi");
+ DO_TEST("misc-no-reboot");
+ DO_TEST("net-user");
+
+ DO_TEST("serial-vc");
+ DO_TEST("serial-pty");
+ DO_TEST("serial-dev");
+ DO_TEST("serial-file");
+ DO_TEST("serial-unix");
+ DO_TEST("serial-tcp");
+ DO_TEST("serial-udp");
+ DO_TEST("serial-tcp-telnet");
+ DO_TEST("serial-many");
+ DO_TEST("parallel-tcp");
+ DO_TEST("console-compat");
virCapabilitiesFree(driver.caps);
Index: tests/qemuxml2xmltest.c
===================================================================
RCS file: /data/cvs/libvirt/tests/qemuxml2xmltest.c,v
retrieving revision 1.12
diff -u -p -r1.12 qemuxml2xmltest.c
--- tests/qemuxml2xmltest.c 10 Apr 2008 16:53:29 -0000 1.12
+++ tests/qemuxml2xmltest.c 15 Apr 2008 21:31:32 -0000
@@ -15,7 +15,7 @@
#include "qemu_conf.h"
static char *progname;
-static char *abs_top_srcdir;
+static char *abs_srcdir;
static struct qemud_driver driver;
#define MAX_FILE 4096
@@ -66,8 +66,8 @@ static int testCompareXMLToXMLFiles(cons
static int testCompareXMLToXMLHelper(const void *data) {
char xml[PATH_MAX];
- snprintf(xml, PATH_MAX, "%s/tests/qemuxml2argvdata/qemuxml2argv-%s.xml",
- abs_top_srcdir, (const char*)data);
+ snprintf(xml, PATH_MAX, "%s/qemuxml2argvdata/qemuxml2argv-%s.xml",
+ abs_srcdir, (const char*)data);
return testCompareXMLToXMLFiles(xml);
}
@@ -76,6 +76,7 @@ int
main(int argc, char **argv)
{
int ret = 0;
+ char cwd[PATH_MAX];
progname = argv[0];
@@ -84,76 +85,45 @@ main(int argc, char **argv)
exit(EXIT_FAILURE);
}
- abs_top_srcdir = getenv("abs_top_srcdir");
- if (!abs_top_srcdir)
- return 1;
-
+ abs_srcdir = getenv("abs_srcdir");
+ if (!abs_srcdir)
+ abs_srcdir = getcwd(cwd, sizeof(cwd));
driver.caps = qemudCapsInit();
- if (virtTestRun("QEMU XML-2-ARGV minimal",
- 1, testCompareXMLToXMLHelper, "minimal") < 0)
- ret = -1;
-
- if (virtTestRun("QEMU XML-2-ARGV Boot CDROM",
- 1, testCompareXMLToXMLHelper, "boot-cdrom") < 0)
- ret = -1;
-
- if (virtTestRun("QEMU XML-2-ARGV Boot Network",
- 1, testCompareXMLToXMLHelper, "boot-network") < 0)
- ret = -1;
-
- if (virtTestRun("QEMU XML-2-ARGV Boot Floppy",
- 1, testCompareXMLToXMLHelper, "boot-floppy") < 0)
- ret = -1;
-
- if (virtTestRun("QEMU XML-2-ARGV Clock UTC",
- 1, testCompareXMLToXMLHelper, "clock-utc") < 0)
- ret = -1;
-
- if (virtTestRun("QEMU XML-2-ARGV Clock Localtime",
- 1, testCompareXMLToXMLHelper, "clock-localtime") < 0)
- ret = -1;
-
- if (virtTestRun("QEMU XML-2-ARGV Disk CDROM",
- 1, testCompareXMLToXMLHelper, "disk-cdrom") < 0)
- ret = -1;
-
- if (virtTestRun("QEMU XML-2-ARGV Disk Floppy",
- 1, testCompareXMLToXMLHelper, "disk-floppy") < 0)
- ret = -1;
-
- if (virtTestRun("QEMU XML-2-ARGV Disk Many",
- 1, testCompareXMLToXMLHelper, "disk-many") < 0)
- ret = -1;
-
- if (virtTestRun("QEMU XML-2-ARGV Graphics VNC",
- 1, testCompareXMLToXMLHelper, "graphics-vnc") < 0)
- ret = -1;
-
- if (virtTestRun("QEMU XML-2-ARGV Graphics SDL",
- 1, testCompareXMLToXMLHelper, "graphics-sdl") < 0)
- ret = -1;
-
- if (virtTestRun("QEMU XML-2-ARGV Input USB Mouse",
- 1, testCompareXMLToXMLHelper, "input-usbmouse") < 0)
- ret = -1;
-
- if (virtTestRun("QEMU XML-2-ARGV Input USB Tablet",
- 1, testCompareXMLToXMLHelper, "input-usbtablet") < 0)
- ret = -1;
-
- if (virtTestRun("QEMU XML-2-ARGV Misc ACPI",
- 1, testCompareXMLToXMLHelper, "misc-acpi") < 0)
- ret = -1;
-
- if (virtTestRun("QEMU XML-2-ARGV Misc No Reboot",
- 1, testCompareXMLToXMLHelper, "misc-no-reboot") < 0)
- ret = -1;
-
- if (virtTestRun("QEMU XML-2-ARGV Net User",
- 1, testCompareXMLToXMLHelper, "net-user") < 0)
- ret = -1;
+#define DO_TEST(name) \
+ if (virtTestRun("QEMU XML-2-XML " name, \
+ 1, testCompareXMLToXMLHelper, (name)) < 0) \
+ ret = -1
+
+ DO_TEST("minimal");
+ DO_TEST("boot-cdrom");
+ DO_TEST("boot-network");
+ DO_TEST("boot-floppy");
+ DO_TEST("clock-utc");
+ DO_TEST("clock-localtime");
+ DO_TEST("disk-cdrom");
+ DO_TEST("disk-floppy");
+ DO_TEST("disk-many");
+ DO_TEST("graphics-vnc");
+ DO_TEST("graphics-sdl");
+ DO_TEST("input-usbmouse");
+ DO_TEST("input-usbtablet");
+ DO_TEST("misc-acpi");
+ DO_TEST("misc-no-reboot");
+ DO_TEST("net-user");
+
+ DO_TEST("serial-vc");
+ DO_TEST("serial-pty");
+ DO_TEST("serial-dev");
+ DO_TEST("serial-file");
+ DO_TEST("serial-unix");
+ DO_TEST("serial-tcp");
+ DO_TEST("serial-udp");
+ DO_TEST("serial-tcp-telnet");
+ DO_TEST("serial-many");
+ DO_TEST("parallel-tcp");
+ DO_TEST("console-compat");
virCapabilitiesFree(driver.caps);
Index: tests/qemuxml2argvdata/qemuxml2argv-boot-cdrom.args
===================================================================
RCS file: /data/cvs/libvirt/tests/qemuxml2argvdata/qemuxml2argv-boot-cdrom.args,v
retrieving revision 1.2
diff -u -p -r1.2 qemuxml2argv-boot-cdrom.args
--- tests/qemuxml2argvdata/qemuxml2argv-boot-cdrom.args 24 Jul 2007 14:30:06 -0000 1.2
+++ tests/qemuxml2argvdata/qemuxml2argv-boot-cdrom.args 15 Apr 2008 21:31:32 -0000
@@ -1 +1 @@
-/usr/bin/qemu -M pc -m 214 -smp 1 -nographic -monitor pty -no-acpi -boot d -cdrom /dev/cdrom -net none -usb
\ No newline at end of file
+/usr/bin/qemu -M pc -m 214 -smp 1 -nographic -monitor pty -no-acpi -boot d -cdrom /dev/cdrom -net none -serial none -parallel none -usb
\ No newline at end of file
Index: tests/qemuxml2argvdata/qemuxml2argv-boot-floppy.args
===================================================================
RCS file: /data/cvs/libvirt/tests/qemuxml2argvdata/qemuxml2argv-boot-floppy.args,v
retrieving revision 1.2
diff -u -p -r1.2 qemuxml2argv-boot-floppy.args
--- tests/qemuxml2argvdata/qemuxml2argv-boot-floppy.args 24 Jul 2007 14:30:06 -0000 1.2
+++ tests/qemuxml2argvdata/qemuxml2argv-boot-floppy.args 15 Apr 2008 21:31:32 -0000
@@ -1 +1 @@
-/usr/bin/qemu -M pc -m 214 -smp 1 -nographic -monitor pty -no-acpi -boot a -hda /dev/HostVG/QEMUGuest1 -fda /tmp/firmware.img -net none -usb
\ No newline at end of file
+/usr/bin/qemu -M pc -m 214 -smp 1 -nographic -monitor pty -no-acpi -boot a -hda /dev/HostVG/QEMUGuest1 -fda /tmp/firmware.img -net none -serial none -parallel none -usb
\ No newline at end of file
Index: tests/qemuxml2argvdata/qemuxml2argv-boot-network.args
===================================================================
RCS file: /data/cvs/libvirt/tests/qemuxml2argvdata/qemuxml2argv-boot-network.args,v
retrieving revision 1.2
diff -u -p -r1.2 qemuxml2argv-boot-network.args
--- tests/qemuxml2argvdata/qemuxml2argv-boot-network.args 24 Jul 2007 14:30:06 -0000 1.2
+++ tests/qemuxml2argvdata/qemuxml2argv-boot-network.args 15 Apr 2008 21:31:32 -0000
@@ -1 +1 @@
-/usr/bin/qemu -M pc -m 214 -smp 1 -nographic -monitor pty -no-acpi -boot n -hda /dev/HostVG/QEMUGuest1 -net none -usb
\ No newline at end of file
+/usr/bin/qemu -M pc -m 214 -smp 1 -nographic -monitor pty -no-acpi -boot n -hda /dev/HostVG/QEMUGuest1 -net none -serial none -parallel none -usb
\ No newline at end of file
Index: tests/qemuxml2argvdata/qemuxml2argv-clock-localtime.args
===================================================================
RCS file: /data/cvs/libvirt/tests/qemuxml2argvdata/qemuxml2argv-clock-localtime.args,v
retrieving revision 1.2
diff -u -p -r1.2 qemuxml2argv-clock-localtime.args
--- tests/qemuxml2argvdata/qemuxml2argv-clock-localtime.args 24 Jul 2007 14:30:06 -0000 1.2
+++ tests/qemuxml2argvdata/qemuxml2argv-clock-localtime.args 15 Apr 2008 21:31:32 -0000
@@ -1 +1 @@
-/usr/bin/qemu -M pc -m 214 -smp 1 -nographic -monitor pty -localtime -no-acpi -boot c -hda /dev/HostVG/QEMUGuest1 -net none -usb
\ No newline at end of file
+/usr/bin/qemu -M pc -m 214 -smp 1 -nographic -monitor pty -localtime -no-acpi -boot c -hda /dev/HostVG/QEMUGuest1 -net none -serial none -parallel none -usb
\ No newline at end of file
Index: tests/qemuxml2argvdata/qemuxml2argv-clock-utc.args
===================================================================
RCS file: /data/cvs/libvirt/tests/qemuxml2argvdata/qemuxml2argv-clock-utc.args,v
retrieving revision 1.2
diff -u -p -r1.2 qemuxml2argv-clock-utc.args
--- tests/qemuxml2argvdata/qemuxml2argv-clock-utc.args 24 Jul 2007 14:30:06 -0000 1.2
+++ tests/qemuxml2argvdata/qemuxml2argv-clock-utc.args 15 Apr 2008 21:31:32 -0000
@@ -1 +1 @@
-/usr/bin/qemu -M pc -m 214 -smp 1 -nographic -monitor pty -no-acpi -boot c -hda /dev/HostVG/QEMUGuest1 -net none -usb
\ No newline at end of file
+/usr/bin/qemu -M pc -m 214 -smp 1 -nographic -monitor pty -no-acpi -boot c -hda /dev/HostVG/QEMUGuest1 -net none -serial none -parallel none -usb
\ No newline at end of file
Index: tests/qemuxml2argvdata/qemuxml2argv-console-compat.args
===================================================================
RCS file: tests/qemuxml2argvdata/qemuxml2argv-console-compat.args
diff -N tests/qemuxml2argvdata/qemuxml2argv-console-compat.args
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ tests/qemuxml2argvdata/qemuxml2argv-console-compat.args 15 Apr 2008 21:31:32 -0000
@@ -0,0 +1 @@
+/usr/bin/qemu -M pc -m 214 -smp 1 -nographic -monitor pty -no-acpi -boot c -hda /dev/HostVG/QEMUGuest1 -net none -serial pty -parallel none -usb
\ No newline at end of file
Index: tests/qemuxml2argvdata/qemuxml2argv-console-compat.xml
===================================================================
RCS file: tests/qemuxml2argvdata/qemuxml2argv-console-compat.xml
diff -N tests/qemuxml2argvdata/qemuxml2argv-console-compat.xml
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ tests/qemuxml2argvdata/qemuxml2argv-console-compat.xml 15 Apr 2008 21:31:32 -0000
@@ -0,0 +1,26 @@
+<domain type='qemu'>
+ <name>QEMUGuest1</name>
+ <uuid>c7a5fdbd-edaf-9455-926a-d65c16db1809</uuid>
+ <memory>219200</memory>
+ <currentMemory>219200</currentMemory>
+ <vcpu>1</vcpu>
+ <os>
+ <type arch='i686' machine='pc'>hvm</type>
+ <boot dev='hd'/>
+ </os>
+ <clock offset='utc'/>
+ <on_poweroff>destroy</on_poweroff>
+ <on_reboot>restart</on_reboot>
+ <on_crash>destroy</on_crash>
+ <devices>
+ <emulator>/usr/bin/qemu</emulator>
+ <disk type='block' device='disk'>
+ <source dev='/dev/HostVG/QEMUGuest1'/>
+ <target dev='hda'/>
+ </disk>
+ <serial type='pty'>
+ <target port='0'/>
+ </serial>
+ <console tty='pty'/>
+ </devices>
+</domain>
Index: tests/qemuxml2argvdata/qemuxml2argv-disk-cdrom.args
===================================================================
RCS file: /data/cvs/libvirt/tests/qemuxml2argvdata/qemuxml2argv-disk-cdrom.args,v
retrieving revision 1.2
diff -u -p -r1.2 qemuxml2argv-disk-cdrom.args
--- tests/qemuxml2argvdata/qemuxml2argv-disk-cdrom.args 24 Jul 2007 14:30:06 -0000 1.2
+++ tests/qemuxml2argvdata/qemuxml2argv-disk-cdrom.args 15 Apr 2008 21:31:32 -0000
@@ -1 +1 @@
-/usr/bin/qemu -M pc -m 214 -smp 1 -nographic -monitor pty -no-acpi -boot c -hda /dev/HostVG/QEMUGuest1 -cdrom /root/boot.iso -net none -usb
\ No newline at end of file
+/usr/bin/qemu -M pc -m 214 -smp 1 -nographic -monitor pty -no-acpi -boot c -hda /dev/HostVG/QEMUGuest1 -cdrom /root/boot.iso -net none -serial none -parallel none -usb
\ No newline at end of file
Index: tests/qemuxml2argvdata/qemuxml2argv-disk-floppy.args
===================================================================
RCS file: /data/cvs/libvirt/tests/qemuxml2argvdata/qemuxml2argv-disk-floppy.args,v
retrieving revision 1.2
diff -u -p -r1.2 qemuxml2argv-disk-floppy.args
--- tests/qemuxml2argvdata/qemuxml2argv-disk-floppy.args 24 Jul 2007 14:30:06 -0000 1.2
+++ tests/qemuxml2argvdata/qemuxml2argv-disk-floppy.args 15 Apr 2008 21:31:32 -0000
@@ -1 +1 @@
-/usr/bin/qemu -M pc -m 214 -smp 1 -nographic -monitor pty -no-acpi -boot c -hda /dev/HostVG/QEMUGuest1 -fda /dev/fd0 -fdb /tmp/firmware.img -net none -usb
\ No newline at end of file
+/usr/bin/qemu -M pc -m 214 -smp 1 -nographic -monitor pty -no-acpi -boot c -hda /dev/HostVG/QEMUGuest1 -fda /dev/fd0 -fdb /tmp/firmware.img -net none -serial none -parallel none -usb
\ No newline at end of file
Index: tests/qemuxml2argvdata/qemuxml2argv-disk-many.args
===================================================================
RCS file: /data/cvs/libvirt/tests/qemuxml2argvdata/qemuxml2argv-disk-many.args,v
retrieving revision 1.2
diff -u -p -r1.2 qemuxml2argv-disk-many.args
--- tests/qemuxml2argvdata/qemuxml2argv-disk-many.args 24 Jul 2007 14:30:06 -0000 1.2
+++ tests/qemuxml2argvdata/qemuxml2argv-disk-many.args 15 Apr 2008 21:31:32 -0000
@@ -1 +1 @@
-/usr/bin/qemu -M pc -m 214 -smp 1 -nographic -monitor pty -no-acpi -boot c -hda /dev/HostVG/QEMUGuest1 -hdb /dev/HostVG/QEMUGuest2 -hdc /tmp/data.img -hdd /tmp/logs.img -net none -usb
\ No newline at end of file
+/usr/bin/qemu -M pc -m 214 -smp 1 -nographic -monitor pty -no-acpi -boot c -hda /dev/HostVG/QEMUGuest1 -hdb /dev/HostVG/QEMUGuest2 -hdc /tmp/data.img -hdd /tmp/logs.img -net none -serial none -parallel none -usb
\ No newline at end of file
Index: tests/qemuxml2argvdata/qemuxml2argv-graphics-sdl.args
===================================================================
RCS file: /data/cvs/libvirt/tests/qemuxml2argvdata/qemuxml2argv-graphics-sdl.args,v
retrieving revision 1.2
diff -u -p -r1.2 qemuxml2argv-graphics-sdl.args
--- tests/qemuxml2argvdata/qemuxml2argv-graphics-sdl.args 24 Jul 2007 14:30:06 -0000 1.2
+++ tests/qemuxml2argvdata/qemuxml2argv-graphics-sdl.args 15 Apr 2008 21:31:32 -0000
@@ -1 +1 @@
-/usr/bin/qemu -M pc -m 214 -smp 1 -monitor pty -no-acpi -boot c -hda /dev/HostVG/QEMUGuest1 -net none -usb
\ No newline at end of file
+/usr/bin/qemu -M pc -m 214 -smp 1 -monitor pty -no-acpi -boot c -hda /dev/HostVG/QEMUGuest1 -net none -serial none -parallel none -usb
\ No newline at end of file
Index: tests/qemuxml2argvdata/qemuxml2argv-graphics-vnc.args
===================================================================
RCS file: /data/cvs/libvirt/tests/qemuxml2argvdata/qemuxml2argv-graphics-vnc.args,v
retrieving revision 1.1
diff -u -p -r1.1 qemuxml2argv-graphics-vnc.args
--- tests/qemuxml2argvdata/qemuxml2argv-graphics-vnc.args 18 Jul 2007 21:34:22 -0000 1.1
+++ tests/qemuxml2argvdata/qemuxml2argv-graphics-vnc.args 15 Apr 2008 21:31:32 -0000
@@ -1 +1 @@
-/usr/bin/qemu -M pc -m 214 -smp 1 -monitor pty -no-acpi -boot c -hda /dev/HostVG/QEMUGuest1 -net none -usb -vnc 127.0.0.1:3
\ No newline at end of file
+/usr/bin/qemu -M pc -m 214 -smp 1 -monitor pty -no-acpi -boot c -hda /dev/HostVG/QEMUGuest1 -net none -serial none -parallel none -usb -vnc 127.0.0.1:3
\ No newline at end of file
Index: tests/qemuxml2argvdata/qemuxml2argv-input-usbmouse.args
===================================================================
RCS file: /data/cvs/libvirt/tests/qemuxml2argvdata/qemuxml2argv-input-usbmouse.args,v
retrieving revision 1.2
diff -u -p -r1.2 qemuxml2argv-input-usbmouse.args
--- tests/qemuxml2argvdata/qemuxml2argv-input-usbmouse.args 24 Jul 2007 14:30:06 -0000 1.2
+++ tests/qemuxml2argvdata/qemuxml2argv-input-usbmouse.args 15 Apr 2008 21:31:32 -0000
@@ -1 +1 @@
-/usr/bin/qemu -M pc -m 214 -smp 1 -nographic -monitor pty -no-acpi -boot c -hda /dev/HostVG/QEMUGuest1 -net none -usb -usbdevice mouse
\ No newline at end of file
+/usr/bin/qemu -M pc -m 214 -smp 1 -nographic -monitor pty -no-acpi -boot c -hda /dev/HostVG/QEMUGuest1 -net none -serial none -parallel none -usb -usbdevice mouse
\ No newline at end of file
Index: tests/qemuxml2argvdata/qemuxml2argv-input-usbtablet.args
===================================================================
RCS file: /data/cvs/libvirt/tests/qemuxml2argvdata/qemuxml2argv-input-usbtablet.args,v
retrieving revision 1.2
diff -u -p -r1.2 qemuxml2argv-input-usbtablet.args
--- tests/qemuxml2argvdata/qemuxml2argv-input-usbtablet.args 24 Jul 2007 14:30:06 -0000 1.2
+++ tests/qemuxml2argvdata/qemuxml2argv-input-usbtablet.args 15 Apr 2008 21:31:32 -0000
@@ -1 +1 @@
-/usr/bin/qemu -M pc -m 214 -smp 1 -nographic -monitor pty -no-acpi -boot c -hda /dev/HostVG/QEMUGuest1 -net none -usb -usbdevice tablet
\ No newline at end of file
+/usr/bin/qemu -M pc -m 214 -smp 1 -nographic -monitor pty -no-acpi -boot c -hda /dev/HostVG/QEMUGuest1 -net none -serial none -parallel none -usb -usbdevice tablet
\ No newline at end of file
Index: tests/qemuxml2argvdata/qemuxml2argv-minimal.args
===================================================================
RCS file: /data/cvs/libvirt/tests/qemuxml2argvdata/qemuxml2argv-minimal.args,v
retrieving revision 1.2
diff -u -p -r1.2 qemuxml2argv-minimal.args
--- tests/qemuxml2argvdata/qemuxml2argv-minimal.args 24 Jul 2007 14:30:06 -0000 1.2
+++ tests/qemuxml2argvdata/qemuxml2argv-minimal.args 15 Apr 2008 21:31:32 -0000
@@ -1 +1 @@
-/usr/bin/qemu -M pc -m 214 -smp 1 -nographic -monitor pty -no-acpi -boot c -hda /dev/HostVG/QEMUGuest1 -net none -usb
\ No newline at end of file
+/usr/bin/qemu -M pc -m 214 -smp 1 -nographic -monitor pty -no-acpi -boot c -hda /dev/HostVG/QEMUGuest1 -net none -serial none -parallel none -usb
\ No newline at end of file
Index: tests/qemuxml2argvdata/qemuxml2argv-misc-acpi.args
===================================================================
RCS file: /data/cvs/libvirt/tests/qemuxml2argvdata/qemuxml2argv-misc-acpi.args,v
retrieving revision 1.2
diff -u -p -r1.2 qemuxml2argv-misc-acpi.args
--- tests/qemuxml2argvdata/qemuxml2argv-misc-acpi.args 24 Jul 2007 14:30:06 -0000 1.2
+++ tests/qemuxml2argvdata/qemuxml2argv-misc-acpi.args 15 Apr 2008 21:31:32 -0000
@@ -1 +1 @@
-/usr/bin/qemu -M pc -m 214 -smp 1 -nographic -monitor pty -boot c -hda /dev/HostVG/QEMUGuest1 -net none -usb
\ No newline at end of file
+/usr/bin/qemu -M pc -m 214 -smp 1 -nographic -monitor pty -boot c -hda /dev/HostVG/QEMUGuest1 -net none -serial none -parallel none -usb
\ No newline at end of file
Index: tests/qemuxml2argvdata/qemuxml2argv-misc-no-reboot.args
===================================================================
RCS file: /data/cvs/libvirt/tests/qemuxml2argvdata/qemuxml2argv-misc-no-reboot.args,v
retrieving revision 1.2
diff -u -p -r1.2 qemuxml2argv-misc-no-reboot.args
--- tests/qemuxml2argvdata/qemuxml2argv-misc-no-reboot.args 24 Jul 2007 14:30:06 -0000 1.2
+++ tests/qemuxml2argvdata/qemuxml2argv-misc-no-reboot.args 15 Apr 2008 21:31:32 -0000
@@ -1 +1 @@
-/usr/bin/qemu -M pc -m 214 -smp 1 -nographic -monitor pty -no-reboot -no-acpi -boot c -hda /dev/HostVG/QEMUGuest1 -net none -usb
\ No newline at end of file
+/usr/bin/qemu -M pc -m 214 -smp 1 -nographic -monitor pty -no-reboot -no-acpi -boot c -hda /dev/HostVG/QEMUGuest1 -net none -serial none -parallel none -usb
\ No newline at end of file
Index: tests/qemuxml2argvdata/qemuxml2argv-net-user.args
===================================================================
RCS file: /data/cvs/libvirt/tests/qemuxml2argvdata/qemuxml2argv-net-user.args,v
retrieving revision 1.2
diff -u -p -r1.2 qemuxml2argv-net-user.args
--- tests/qemuxml2argvdata/qemuxml2argv-net-user.args 24 Jul 2007 14:30:06 -0000 1.2
+++ tests/qemuxml2argvdata/qemuxml2argv-net-user.args 15 Apr 2008 21:31:32 -0000
@@ -1 +1 @@
-/usr/bin/qemu -M pc -m 214 -smp 1 -nographic -monitor pty -no-acpi -boot c -hda /dev/HostVG/QEMUGuest1 -net nic,macaddr=00:11:22:33:44:55,vlan=0 -net user,vlan=0 -usb
\ No newline at end of file
+/usr/bin/qemu -M pc -m 214 -smp 1 -nographic -monitor pty -no-acpi -boot c -hda /dev/HostVG/QEMUGuest1 -net nic,macaddr=00:11:22:33:44:55,vlan=0 -net user,vlan=0 -serial none -parallel none -usb
\ No newline at end of file
Index: tests/qemuxml2argvdata/qemuxml2argv-parallel-tcp.args
===================================================================
RCS file: tests/qemuxml2argvdata/qemuxml2argv-parallel-tcp.args
diff -N tests/qemuxml2argvdata/qemuxml2argv-parallel-tcp.args
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ tests/qemuxml2argvdata/qemuxml2argv-parallel-tcp.args 15 Apr 2008 21:31:32 -0000
@@ -0,0 +1 @@
+/usr/bin/qemu -M pc -m 214 -smp 1 -nographic -monitor pty -no-acpi -boot c -hda /dev/HostVG/QEMUGuest1 -net none -serial none -parallel tcp:127.0.0.1:9999,listen -usb
\ No newline at end of file
Index: tests/qemuxml2argvdata/qemuxml2argv-parallel-tcp.xml
===================================================================
RCS file: tests/qemuxml2argvdata/qemuxml2argv-parallel-tcp.xml
diff -N tests/qemuxml2argvdata/qemuxml2argv-parallel-tcp.xml
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ tests/qemuxml2argvdata/qemuxml2argv-parallel-tcp.xml 15 Apr 2008 21:31:32 -0000
@@ -0,0 +1,26 @@
+<domain type='qemu'>
+ <name>QEMUGuest1</name>
+ <uuid>c7a5fdbd-edaf-9455-926a-d65c16db1809</uuid>
+ <memory>219200</memory>
+ <currentMemory>219200</currentMemory>
+ <vcpu>1</vcpu>
+ <os>
+ <type arch='i686' machine='pc'>hvm</type>
+ <boot dev='hd'/>
+ </os>
+ <clock offset='utc'/>
+ <on_poweroff>destroy</on_poweroff>
+ <on_reboot>restart</on_reboot>
+ <on_crash>destroy</on_crash>
+ <devices>
+ <emulator>/usr/bin/qemu</emulator>
+ <disk type='block' device='disk'>
+ <source dev='/dev/HostVG/QEMUGuest1'/>
+ <target dev='hda'/>
+ </disk>
+ <parallel type='tcp'>
+ <source mode='bind' host='127.0.0.1' service='9999' wiremode='raw'/>
+ <target port='0'/>
+ </parallel>
+ </devices>
+</domain>
Index: tests/qemuxml2argvdata/qemuxml2argv-serial-dev.args
===================================================================
RCS file: tests/qemuxml2argvdata/qemuxml2argv-serial-dev.args
diff -N tests/qemuxml2argvdata/qemuxml2argv-serial-dev.args
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ tests/qemuxml2argvdata/qemuxml2argv-serial-dev.args 15 Apr 2008 21:31:32 -0000
@@ -0,0 +1 @@
+/usr/bin/qemu -M pc -m 214 -smp 1 -nographic -monitor pty -no-acpi -boot c -hda /dev/HostVG/QEMUGuest1 -net none -serial /dev/ttyS2 -parallel none -usb
\ No newline at end of file
Index: tests/qemuxml2argvdata/qemuxml2argv-serial-dev.xml
===================================================================
RCS file: tests/qemuxml2argvdata/qemuxml2argv-serial-dev.xml
diff -N tests/qemuxml2argvdata/qemuxml2argv-serial-dev.xml
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ tests/qemuxml2argvdata/qemuxml2argv-serial-dev.xml 15 Apr 2008 21:31:32 -0000
@@ -0,0 +1,26 @@
+<domain type='qemu'>
+ <name>QEMUGuest1</name>
+ <uuid>c7a5fdbd-edaf-9455-926a-d65c16db1809</uuid>
+ <memory>219200</memory>
+ <currentMemory>219200</currentMemory>
+ <vcpu>1</vcpu>
+ <os>
+ <type arch='i686' machine='pc'>hvm</type>
+ <boot dev='hd'/>
+ </os>
+ <clock offset='utc'/>
+ <on_poweroff>destroy</on_poweroff>
+ <on_reboot>restart</on_reboot>
+ <on_crash>destroy</on_crash>
+ <devices>
+ <emulator>/usr/bin/qemu</emulator>
+ <disk type='block' device='disk'>
+ <source dev='/dev/HostVG/QEMUGuest1'/>
+ <target dev='hda'/>
+ </disk>
+ <serial type='dev'>
+ <source path='/dev/ttyS2'/>
+ <target port='0'/>
+ </serial>
+ </devices>
+</domain>
Index: tests/qemuxml2argvdata/qemuxml2argv-serial-file.args
===================================================================
RCS file: tests/qemuxml2argvdata/qemuxml2argv-serial-file.args
diff -N tests/qemuxml2argvdata/qemuxml2argv-serial-file.args
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ tests/qemuxml2argvdata/qemuxml2argv-serial-file.args 15 Apr 2008 21:31:32 -0000
@@ -0,0 +1 @@
+/usr/bin/qemu -M pc -m 214 -smp 1 -nographic -monitor pty -no-acpi -boot c -hda /dev/HostVG/QEMUGuest1 -net none -serial file:/tmp/serial.log -parallel none -usb
\ No newline at end of file
Index: tests/qemuxml2argvdata/qemuxml2argv-serial-file.xml
===================================================================
RCS file: tests/qemuxml2argvdata/qemuxml2argv-serial-file.xml
diff -N tests/qemuxml2argvdata/qemuxml2argv-serial-file.xml
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ tests/qemuxml2argvdata/qemuxml2argv-serial-file.xml 15 Apr 2008 21:31:32 -0000
@@ -0,0 +1,26 @@
+<domain type='qemu'>
+ <name>QEMUGuest1</name>
+ <uuid>c7a5fdbd-edaf-9455-926a-d65c16db1809</uuid>
+ <memory>219200</memory>
+ <currentMemory>219200</currentMemory>
+ <vcpu>1</vcpu>
+ <os>
+ <type arch='i686' machine='pc'>hvm</type>
+ <boot dev='hd'/>
+ </os>
+ <clock offset='utc'/>
+ <on_poweroff>destroy</on_poweroff>
+ <on_reboot>restart</on_reboot>
+ <on_crash>destroy</on_crash>
+ <devices>
+ <emulator>/usr/bin/qemu</emulator>
+ <disk type='block' device='disk'>
+ <source dev='/dev/HostVG/QEMUGuest1'/>
+ <target dev='hda'/>
+ </disk>
+ <serial type='file'>
+ <source path='/tmp/serial.log'/>
+ <target port='0'/>
+ </serial>
+ </devices>
+</domain>
Index: tests/qemuxml2argvdata/qemuxml2argv-serial-many.args
===================================================================
RCS file: tests/qemuxml2argvdata/qemuxml2argv-serial-many.args
diff -N tests/qemuxml2argvdata/qemuxml2argv-serial-many.args
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ tests/qemuxml2argvdata/qemuxml2argv-serial-many.args 15 Apr 2008 21:31:32 -0000
@@ -0,0 +1 @@
+/usr/bin/qemu -M pc -m 214 -smp 1 -nographic -monitor pty -no-acpi -boot c -hda /dev/HostVG/QEMUGuest1 -net none -serial pty -serial file:/tmp/serial.log -parallel none -usb
\ No newline at end of file
Index: tests/qemuxml2argvdata/qemuxml2argv-serial-many.xml
===================================================================
RCS file: tests/qemuxml2argvdata/qemuxml2argv-serial-many.xml
diff -N tests/qemuxml2argvdata/qemuxml2argv-serial-many.xml
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ tests/qemuxml2argvdata/qemuxml2argv-serial-many.xml 15 Apr 2008 21:31:32 -0000
@@ -0,0 +1,30 @@
+<domain type='qemu'>
+ <name>QEMUGuest1</name>
+ <uuid>c7a5fdbd-edaf-9455-926a-d65c16db1809</uuid>
+ <memory>219200</memory>
+ <currentMemory>219200</currentMemory>
+ <vcpu>1</vcpu>
+ <os>
+ <type arch='i686' machine='pc'>hvm</type>
+ <boot dev='hd'/>
+ </os>
+ <clock offset='utc'/>
+ <on_poweroff>destroy</on_poweroff>
+ <on_reboot>restart</on_reboot>
+ <on_crash>destroy</on_crash>
+ <devices>
+ <emulator>/usr/bin/qemu</emulator>
+ <disk type='block' device='disk'>
+ <source dev='/dev/HostVG/QEMUGuest1'/>
+ <target dev='hda'/>
+ </disk>
+ <serial type='pty'>
+ <target port='0'/>
+ </serial>
+ <serial type='file'>
+ <source path='/tmp/serial.log'/>
+ <target port='1'/>
+ </serial>
+ <console tty='pty'/>
+ </devices>
+</domain>
Index: tests/qemuxml2argvdata/qemuxml2argv-serial-pty.args
===================================================================
RCS file: tests/qemuxml2argvdata/qemuxml2argv-serial-pty.args
diff -N tests/qemuxml2argvdata/qemuxml2argv-serial-pty.args
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ tests/qemuxml2argvdata/qemuxml2argv-serial-pty.args 15 Apr 2008 21:31:32 -0000
@@ -0,0 +1 @@
+/usr/bin/qemu -M pc -m 214 -smp 1 -nographic -monitor pty -no-acpi -boot c -hda /dev/HostVG/QEMUGuest1 -net none -serial pty -parallel none -usb
\ No newline at end of file
Index: tests/qemuxml2argvdata/qemuxml2argv-serial-pty.xml
===================================================================
RCS file: tests/qemuxml2argvdata/qemuxml2argv-serial-pty.xml
diff -N tests/qemuxml2argvdata/qemuxml2argv-serial-pty.xml
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ tests/qemuxml2argvdata/qemuxml2argv-serial-pty.xml 15 Apr 2008 21:31:32 -0000
@@ -0,0 +1,26 @@
+<domain type='qemu'>
+ <name>QEMUGuest1</name>
+ <uuid>c7a5fdbd-edaf-9455-926a-d65c16db1809</uuid>
+ <memory>219200</memory>
+ <currentMemory>219200</currentMemory>
+ <vcpu>1</vcpu>
+ <os>
+ <type arch='i686' machine='pc'>hvm</type>
+ <boot dev='hd'/>
+ </os>
+ <clock offset='utc'/>
+ <on_poweroff>destroy</on_poweroff>
+ <on_reboot>restart</on_reboot>
+ <on_crash>destroy</on_crash>
+ <devices>
+ <emulator>/usr/bin/qemu</emulator>
+ <disk type='block' device='disk'>
+ <source dev='/dev/HostVG/QEMUGuest1'/>
+ <target dev='hda'/>
+ </disk>
+ <serial type='pty'>
+ <target port='0'/>
+ </serial>
+ <console tty='pty'/>
+ </devices>
+</domain>
Index: tests/qemuxml2argvdata/qemuxml2argv-serial-tcp-telnet.args
===================================================================
RCS file: tests/qemuxml2argvdata/qemuxml2argv-serial-tcp-telnet.args
diff -N tests/qemuxml2argvdata/qemuxml2argv-serial-tcp-telnet.args
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ tests/qemuxml2argvdata/qemuxml2argv-serial-tcp-telnet.args 15 Apr 2008 21:31:32 -0000
@@ -0,0 +1 @@
+/usr/bin/qemu -M pc -m 214 -smp 1 -nographic -monitor pty -no-acpi -boot c -hda /dev/HostVG/QEMUGuest1 -net none -serial telnet:127.0.0.1:9999,listen -parallel none -usb
\ No newline at end of file
Index: tests/qemuxml2argvdata/qemuxml2argv-serial-tcp-telnet.xml
===================================================================
RCS file: tests/qemuxml2argvdata/qemuxml2argv-serial-tcp-telnet.xml
diff -N tests/qemuxml2argvdata/qemuxml2argv-serial-tcp-telnet.xml
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ tests/qemuxml2argvdata/qemuxml2argv-serial-tcp-telnet.xml 15 Apr 2008 21:31:32 -0000
@@ -0,0 +1,26 @@
+<domain type='qemu'>
+ <name>QEMUGuest1</name>
+ <uuid>c7a5fdbd-edaf-9455-926a-d65c16db1809</uuid>
+ <memory>219200</memory>
+ <currentMemory>219200</currentMemory>
+ <vcpu>1</vcpu>
+ <os>
+ <type arch='i686' machine='pc'>hvm</type>
+ <boot dev='hd'/>
+ </os>
+ <clock offset='utc'/>
+ <on_poweroff>destroy</on_poweroff>
+ <on_reboot>restart</on_reboot>
+ <on_crash>destroy</on_crash>
+ <devices>
+ <emulator>/usr/bin/qemu</emulator>
+ <disk type='block' device='disk'>
+ <source dev='/dev/HostVG/QEMUGuest1'/>
+ <target dev='hda'/>
+ </disk>
+ <serial type='tcp'>
+ <source mode='bind' host='127.0.0.1' service='9999' wiremode='telnet'/>
+ <target port='0'/>
+ </serial>
+ </devices>
+</domain>
Index: tests/qemuxml2argvdata/qemuxml2argv-serial-tcp.args
===================================================================
RCS file: tests/qemuxml2argvdata/qemuxml2argv-serial-tcp.args
diff -N tests/qemuxml2argvdata/qemuxml2argv-serial-tcp.args
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ tests/qemuxml2argvdata/qemuxml2argv-serial-tcp.args 15 Apr 2008 21:31:32 -0000
@@ -0,0 +1 @@
+/usr/bin/qemu -M pc -m 214 -smp 1 -nographic -monitor pty -no-acpi -boot c -hda /dev/HostVG/QEMUGuest1 -net none -serial tcp:127.0.0.1:9999 -parallel none -usb
\ No newline at end of file
Index: tests/qemuxml2argvdata/qemuxml2argv-serial-tcp.xml
===================================================================
RCS file: tests/qemuxml2argvdata/qemuxml2argv-serial-tcp.xml
diff -N tests/qemuxml2argvdata/qemuxml2argv-serial-tcp.xml
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ tests/qemuxml2argvdata/qemuxml2argv-serial-tcp.xml 15 Apr 2008 21:31:32 -0000
@@ -0,0 +1,26 @@
+<domain type='qemu'>
+ <name>QEMUGuest1</name>
+ <uuid>c7a5fdbd-edaf-9455-926a-d65c16db1809</uuid>
+ <memory>219200</memory>
+ <currentMemory>219200</currentMemory>
+ <vcpu>1</vcpu>
+ <os>
+ <type arch='i686' machine='pc'>hvm</type>
+ <boot dev='hd'/>
+ </os>
+ <clock offset='utc'/>
+ <on_poweroff>destroy</on_poweroff>
+ <on_reboot>restart</on_reboot>
+ <on_crash>destroy</on_crash>
+ <devices>
+ <emulator>/usr/bin/qemu</emulator>
+ <disk type='block' device='disk'>
+ <source dev='/dev/HostVG/QEMUGuest1'/>
+ <target dev='hda'/>
+ </disk>
+ <serial type='tcp'>
+ <source mode='connect' host='127.0.0.1' service='9999' wiremode='raw'/>
+ <target port='0'/>
+ </serial>
+ </devices>
+</domain>
Index: tests/qemuxml2argvdata/qemuxml2argv-serial-udp.args
===================================================================
RCS file: tests/qemuxml2argvdata/qemuxml2argv-serial-udp.args
diff -N tests/qemuxml2argvdata/qemuxml2argv-serial-udp.args
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ tests/qemuxml2argvdata/qemuxml2argv-serial-udp.args 15 Apr 2008 21:31:32 -0000
@@ -0,0 +1 @@
+/usr/bin/qemu -M pc -m 214 -smp 1 -nographic -monitor pty -no-acpi -boot c -hda /dev/HostVG/QEMUGuest1 -net none -serial udp:127.0.0.1:9998@127.0.0.1:9999 -parallel none -usb
\ No newline at end of file
Index: tests/qemuxml2argvdata/qemuxml2argv-serial-udp.xml
===================================================================
RCS file: tests/qemuxml2argvdata/qemuxml2argv-serial-udp.xml
diff -N tests/qemuxml2argvdata/qemuxml2argv-serial-udp.xml
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ tests/qemuxml2argvdata/qemuxml2argv-serial-udp.xml 15 Apr 2008 21:31:32 -0000
@@ -0,0 +1,27 @@
+<domain type='qemu'>
+ <name>QEMUGuest1</name>
+ <uuid>c7a5fdbd-edaf-9455-926a-d65c16db1809</uuid>
+ <memory>219200</memory>
+ <currentMemory>219200</currentMemory>
+ <vcpu>1</vcpu>
+ <os>
+ <type arch='i686' machine='pc'>hvm</type>
+ <boot dev='hd'/>
+ </os>
+ <clock offset='utc'/>
+ <on_poweroff>destroy</on_poweroff>
+ <on_reboot>restart</on_reboot>
+ <on_crash>destroy</on_crash>
+ <devices>
+ <emulator>/usr/bin/qemu</emulator>
+ <disk type='block' device='disk'>
+ <source dev='/dev/HostVG/QEMUGuest1'/>
+ <target dev='hda'/>
+ </disk>
+ <serial type='udp'>
+ <source mode='bind' host='127.0.0.1' service='9999'/>
+ <source mode='connect' host='127.0.0.1' service='9998'/>
+ <target port='0'/>
+ </serial>
+ </devices>
+</domain>
Index: tests/qemuxml2argvdata/qemuxml2argv-serial-unix.args
===================================================================
RCS file: tests/qemuxml2argvdata/qemuxml2argv-serial-unix.args
diff -N tests/qemuxml2argvdata/qemuxml2argv-serial-unix.args
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ tests/qemuxml2argvdata/qemuxml2argv-serial-unix.args 15 Apr 2008 21:31:32 -0000
@@ -0,0 +1 @@
+/usr/bin/qemu -M pc -m 214 -smp 1 -nographic -monitor pty -no-acpi -boot c -hda /dev/HostVG/QEMUGuest1 -net none -serial unix:/tmp/serial.sock -parallel none -usb
\ No newline at end of file
Index: tests/qemuxml2argvdata/qemuxml2argv-serial-unix.xml
===================================================================
RCS file: tests/qemuxml2argvdata/qemuxml2argv-serial-unix.xml
diff -N tests/qemuxml2argvdata/qemuxml2argv-serial-unix.xml
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ tests/qemuxml2argvdata/qemuxml2argv-serial-unix.xml 15 Apr 2008 21:31:32 -0000
@@ -0,0 +1,26 @@
+<domain type='qemu'>
+ <name>QEMUGuest1</name>
+ <uuid>c7a5fdbd-edaf-9455-926a-d65c16db1809</uuid>
+ <memory>219200</memory>
+ <currentMemory>219200</currentMemory>
+ <vcpu>1</vcpu>
+ <os>
+ <type arch='i686' machine='pc'>hvm</type>
+ <boot dev='hd'/>
+ </os>
+ <clock offset='utc'/>
+ <on_poweroff>destroy</on_poweroff>
+ <on_reboot>restart</on_reboot>
+ <on_crash>destroy</on_crash>
+ <devices>
+ <emulator>/usr/bin/qemu</emulator>
+ <disk type='block' device='disk'>
+ <source dev='/dev/HostVG/QEMUGuest1'/>
+ <target dev='hda'/>
+ </disk>
+ <serial type='unix'>
+ <source mode='connect' path='/tmp/serial.sock'/>
+ <target port='0'/>
+ </serial>
+ </devices>
+</domain>
Index: tests/qemuxml2argvdata/qemuxml2argv-serial-vc.args
===================================================================
RCS file: tests/qemuxml2argvdata/qemuxml2argv-serial-vc.args
diff -N tests/qemuxml2argvdata/qemuxml2argv-serial-vc.args
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ tests/qemuxml2argvdata/qemuxml2argv-serial-vc.args 15 Apr 2008 21:31:32 -0000
@@ -0,0 +1 @@
+/usr/bin/qemu -M pc -m 214 -smp 1 -nographic -monitor pty -no-acpi -boot c -hda /dev/HostVG/QEMUGuest1 -net none -serial vc -parallel none -usb
\ No newline at end of file
Index: tests/qemuxml2argvdata/qemuxml2argv-serial-vc.xml
===================================================================
RCS file: tests/qemuxml2argvdata/qemuxml2argv-serial-vc.xml
diff -N tests/qemuxml2argvdata/qemuxml2argv-serial-vc.xml
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ tests/qemuxml2argvdata/qemuxml2argv-serial-vc.xml 15 Apr 2008 21:31:33 -0000
@@ -0,0 +1,25 @@
+<domain type='qemu'>
+ <name>QEMUGuest1</name>
+ <uuid>c7a5fdbd-edaf-9455-926a-d65c16db1809</uuid>
+ <memory>219200</memory>
+ <currentMemory>219200</currentMemory>
+ <vcpu>1</vcpu>
+ <os>
+ <type arch='i686' machine='pc'>hvm</type>
+ <boot dev='hd'/>
+ </os>
+ <clock offset='utc'/>
+ <on_poweroff>destroy</on_poweroff>
+ <on_reboot>restart</on_reboot>
+ <on_crash>destroy</on_crash>
+ <devices>
+ <emulator>/usr/bin/qemu</emulator>
+ <disk type='block' device='disk'>
+ <source dev='/dev/HostVG/QEMUGuest1'/>
+ <target dev='hda'/>
+ </disk>
+ <serial type='vc'>
+ <target port='0'/>
+ </serial>
+ </devices>
+</domain>
--
|: Red Hat, Engineering, Boston -o- http://people.redhat.com/berrange/ :|
|: http://libvirt.org -o- http://virt-manager.org -o- http://ovirt.org :|
|: http://autobuild.org -o- http://search.cpan.org/~danberr/ :|
|: GnuPG: 7D3B9505 -o- F3C9 553F A1DA 4AC2 5648 23C1 B3DF F742 7D3B 9505 :|
4
4
I'd like to get some comments on the following...
We would like to use libvirt to store some properties related to a
domain. This can be done by adding a simple get/set API as follows:
/*
* Domain property get/set interfaces
*
* For GetProp, the return value must be freed by the caller.
*/
char * virDomainGetProp (virDomainPtr domain,
const char *propName);
int virDomainSetProp (virDomainPtr domain,
const char *propName,
const char *value);
Sample command-line usage:
virsh # setprop solaris-pv-0 foo bar
virsh # setprop solaris-pv-0 blah 3
virsh # getprop solaris-pv-0 foo
foo: bar
The XML would look something like this:
virsh # dumpxml solaris-pv-0
<domain type='xen' id='-1'>
[ snip ]
<properties>
<blah value="3"/>
<foo value="bar"/>
</properties>
</domain>
Looking at the Xen code, I'll need to do a bit of work on that API
before I can implement this. I don't know how well this will fit into
the other hypervisors that Libvirt supports, so I'll leave those
implementations up to someone else :)
Any thoughts?
-Ryan
5
11
15 Apr '08
I am pleased to announce the release of version 0.0.7 of the
ruby-libvirt bindings. The main reason for this release is to fix a
nasty crash caused by the use of virResetError.
NEWS:
* Binding for virDomainMigrate
* Fix crash caused by using virResetError
* More sensible message included in exceptions
The main site for them is http://libvirt.org/ruby
API docs can be found at http://libvirt.org/ruby/api/index.html
Tarballs/src RPM's are at http://libvirt.org/ruby/download
Packages for F-8/F-9 are in the works and should show up on a friendly
mirror near you soon.
David
1
0
Hi!
Since last official release of ruby bindings is causing nasty crash in
error handling code, wouldn't it be good idea to issue new bugfix
release.
I am packaging my software which is using libvirt and in RPM I am
putting a dependency, specifying minimal ruby-libvirt version. I could
not set it to last official release since it is known to cause
crashes. So the only option I have is to distribute custom RPM of
libvirt ruby bindings based on mercurial snapshot.
Sincerely,
Vadim
--
"La perfection est atteinte non quand il ne reste rien a ajouter, mais
quand il ne reste rien a enlever." (Antoine de Saint-Exupery)
2
1
I am observing a crash with libvirt ruby bindings. Please see stack
trace below. I am using libvirt-0.4.2 and ruby-libvirt-0.0.6. I have
upgraded to new versions of both today, so I am not sure which one is
to blame. The problem happening when I try to do domain shutdown.
I can reproduce the problem, so if somebody will be looking into that,
I can aid debugging it.
Sincerely,
Vadim
*** glibc detected *** ruby: free(): invalid pointer: 0xb7e5e054 ***
======= Backtrace: =========
/lib/i686/nosegneg/libc.so.6[0x5166a6]
/lib/i686/nosegneg/libc.so.6(cfree+0x90)[0x519c10]
/usr/lib/libvirt.so.0(virResetError+0x2e)[0x421f3de]
/usr/lib/ruby/site_ruby/1.8/i386-linux/_libvirt.so[0x11ca3e]
/usr/lib/ruby/site_ruby/1.8/i386-linux/_libvirt.so(libvirt_dom_shutdown
+0x5e)[0x11f9fe]
/usr/lib/libruby.so.1.8[0xb45db5]
/usr/lib/libruby.so.1.8[0xb4d49b]
/usr/lib/libruby.so.1.8[0xb4e09d]
/usr/lib/libruby.so.1.8[0xb45dc8]
/usr/lib/libruby.so.1.8[0xb4d49b]
/usr/lib/libruby.so.1.8[0xb4e1b8]
/usr/lib/libruby.so.1.8[0xb55e76]
/usr/lib/libruby.so.1.8[0xb5695e]
/usr/lib/libruby.so.1.8[0xb56c1c]
/usr/lib/libruby.so.1.8[0xb4dd74]
/usr/lib/libruby.so.1.8[0xb4e1b8]
/usr/lib/libruby.so.1.8[0xb55f92]
/usr/lib/libruby.so.1.8[0xb58a88]
/usr/lib/libruby.so.1.8[0xb59658]
/usr/lib/libruby.so.1.8[0xb459c7]
/usr/lib/libruby.so.1.8[0xb4d49b]
/usr/lib/libruby.so.1.8[0xb4e1b8]
/usr/lib/libruby.so.1.8[0xb55e76]
/usr/lib/libruby.so.1.8[0xb5433a]
/usr/lib/libruby.so.1.8[0xb5695e]
/usr/lib/libruby.so.1.8[0xb58a88]
/usr/lib/libruby.so.1.8[0xb59658]
/usr/lib/libruby.so.1.8[0xb459c7]
/usr/lib/libruby.so.1.8[0xb4d49b]
/usr/lib/libruby.so.1.8[0xb4e1b8]
/usr/lib/libruby.so.1.8[0xb55e76]
/usr/lib/libruby.so.1.8[0xb55bd0]
/usr/lib/libruby.so.1.8[0xb58a88]
/usr/lib/libruby.so.1.8(rb_yield+0x21)[0xb59eb1]
/usr/lib/libruby.so.1.8(rb_ary_each+0x31)[0xb33031]
/usr/lib/libruby.so.1.8[0xb45db5]
/usr/lib/libruby.so.1.8[0xb4d49b]
/usr/lib/libruby.so.1.8[0xb4e1b8]
/usr/lib/libruby.so.1.8[0xb5655d]
/usr/lib/libruby.so.1.8[0xb4dd74]
/usr/lib/libruby.so.1.8[0xb4e1b8]
/usr/lib/libruby.so.1.8[0xb55f92]
/usr/lib/libruby.so.1.8[0xb54b8c]
/usr/lib/libruby.so.1.8[0xb5695e]
/usr/lib/libruby.so.1.8[0xb4dd74]
/usr/lib/libruby.so.1.8[0xb4e1b8]
/usr/lib/libruby.so.1.8[0xb55f92]
/usr/lib/libruby.so.1.8[0xb551c0]
/usr/lib/libruby.so.1.8[0xb567c0]
/usr/lib/libruby.so.1.8[0xb4dd74]
/usr/lib/libruby.so.1.8[0xb4e1b8]
/usr/lib/libruby.so.1.8[0xb55f92]
/usr/lib/libruby.so.1.8[0xb4dd74]
/usr/lib/libruby.so.1.8[0xb4e1b8]
/usr/lib/libruby.so.1.8[0xb55f92]
/usr/lib/libruby.so.1.8[0xb5467a]
/usr/lib/libruby.so.1.8[0xb4dd74]
/usr/lib/libruby.so.1.8[0xb4e1b8]
/usr/lib/libruby.so.1.8(rb_call_super+0xa2)[0xb4f152]
/usr/lib/libruby.so.1.8[0xb54b37]
/usr/lib/libruby.so.1.8[0xb4dd74]
/usr/lib/libruby.so.1.8[0xb4e1b8]
/usr/lib/libruby.so.1.8[0xb55e76]
======= Memory map: ========
00110000-00111000 r-xp 00000000 08:01 6095946 /usr/lib/ruby/1.8/
i386-linux/fcntl.so
00111000-00112000 rw-p 00000000 08:01 6095946 /usr/lib/ruby/1.8/
i386-linux/fcntl.so
00112000-00114000 r-xp 00000000 08:01 6095942 /usr/lib/ruby/1.8/
i386-linux/digest.so
00114000-00115000 rw-p 00001000 08:01 6095942 /usr/lib/ruby/1.8/
i386-linux/digest.so
00116000-00117000 r-xp 00116000 00:00 0 [vdso]
00117000-00123000 r-xp 00000000 08:01 6193153 /usr/lib/ruby/
site_ruby/1.8/i386-linux/_libvirt.so
00123000-00124000 rw-p 0000c000 08:01 6193153 /usr/lib/ruby/
site_ruby/1.8/i386-linux/_libvirt.so
00124000-00250000 r-xp 00000000 08:01 5618582 /usr/lib/libxml2.so.
2.6.26
00250000-00256000 rw-p 0012b000 08:01 5618582 /usr/lib/libxml2.so.
2.6.26
00256000-0025f000 r-xp 00000000 08:01 6095962 /usr/lib/ruby/1.8/
i386-linux/zlib.so
0025f000-00260000 rw-p 00008000 08:01 6095962 /usr/lib/ruby/1.8/
i386-linux/zlib.so
00260000-00264000 r-xp 00000000 08:01 6193994 /usr/lib/ruby/1.8/
i386-linux/digest/sha2.so
00264000-00265000 rw-p 00003000 08:01 6193994 /usr/lib/ruby/1.8/
i386-linux/digest/sha2.so
00265000-0028a000 r-xp 00000000 08:01 5614351 /usr/lib/
libk5crypto.so.3.1
0028a000-0028b000 rw-p 00025000 08:01 5614351 /usr/lib/
libk5crypto.so.3.1
0028b000-00296000 r-xp 00000000 08:01 14915360 /lib/
libgcc_s-4.1.2-20070626.so.1
00296000-00297000 rw-p 0000a000 08:01 14915360 /lib/
libgcc_s-4.1.2-20070626.so.1
0029b000-002a6000 r-xp 00000000 08:01 6095957 /usr/lib/ruby/1.8/
i386-linux/socket.so
002a6000-002a7000 rw-p 0000a000 08:01 6095957 /usr/lib/ruby/1.8/
i386-linux/socket.so
002bb000-00332000 r-xp 00000000 08:01 5609971 /usr/lib/libgnutls.so.
13.0.6
00332000-00338000 rw-p 00076000 08:01 5609971 /usr/lib/libgnutls.so.
13.0.6
00338000-0038b000 r-xp 00000000 08:01 5609906 /usr/lib/libgcrypt.so.
11.2.2
0038b000-0038d000 rw-p 00053000 08:01 5609906 /usr/lib/libgcrypt.so.
11.2.2
0048d000-004a6000 r-xp 00000000 08:01 14909450 /lib/ld-2.5.so
004a6000-004a7000 r--p 00019000 08:01 14909450 /lib/ld-2.5.so
004a7000-004a8000 rw-p 0001a000 08:01 14909450 /lib/ld-2.5.so
004aa000-004ac000 r-xp 00000000 08:01 14915357 /lib/libcom_err.so.2.1
004ac000-004ad000 rw-p 00001000 08:01 14915357 /lib/libcom_err.so.2.1
004af000-005ec000 r-xp 00000000 08:01 14909452 /lib/i686/nosegneg/
libc-2.5.so
005ec000-005ee000 r--p 0013d000 08:01 14909452 /lib/i686/nosegneg/
libc-2.5.so
005ee000-005ef000 rw-p 0013f000 08:01 14909452 /lib/i686/nosegneg/
libc-2.5.so
005ef000-005f2000 rw-p 005ef000 00:00 0
005f4000-005f6000 r-xp 00000000 08:01 14909481 /lib/libdl-2.5.so
005f6000-005f7000 r--p 00001000 08:01 14909481 /lib/libdl-2.5.so
005f7000-005f8000 rw-p 00002000 08:01 14909481 /lib/libdl-2.5.so
005fa000-0060d000 r-xp 00000000 08:01 14909458 /lib/i686/nosegneg/
libpthread-2.5.so
0060d000-0060e000 r--p 00012000 08:01 14909458 /lib/i686/nosegneg/
libpthread-2.5.so
0060e000-0060f000 rw-p 00013000 08:01 14909458 /lib/i686/nosegneg/
libpthread-2.5.so
0060f000-00611000 rw-p 0060f000 00:00 0
00613000-00638000 r-xp 00000000 08:01 14909471 /lib/i686/nosegneg/
libm-2.5.so
00638000-00639000 r--p 00024000 08:01 14909471 /lib/i686/nosegneg/
libm-2.5.so
00639000-0063a000 rw-p 00025000 08:01 14909471 /lib/i686/nosegneg/
libm-2.5.so
0063c000-00651000 r-xp 00000000 08:01 14915356 /lib/libselinux.so.1
00651000-00653000 rw-p 00015000 08:01 14915356 /lib/libselinux.so.1
00655000-00690000 r-xp 00000000 08:01 14915355 /lib/libsepol.so.1
00690000-00691000 rw-p 0003a000 08:01 14915355 /lib/libsepol.so.1
00691000-0069b000 rw-p 00691000 00:00 0
0069d000-006af000 r-xp 00000000 08:01 5609961 /usr/lib/libz.so.1.2.3
006af000-006b0000 rw-p 00011000 08:01 5609961 /usr/lib/libz.so.1.2.3
006b2000-006b6000 r-xp 00000000 08:01 5614350 /usr/lib/
libxenstore.so.3.0.0
006b6000-006b7000 rw-p 00003000 08:01 5614350 /usr/lib/
libxenstore.so.3.0.0
006b7000-006ba000 rw-p 006b7000 00:00 0
006bd000-006d0000 r-xp 00000000 08:01 14909475 /lib/libnsl-2.5.so
006d0000-006d1000 r--p 00012000 08:01 14909475 /lib/libnsl-2.5.so
006d1000-006d2000 rw-p 00013000 08:01 14909475 /lib/libnsl-2.5.so
006d2000-006d4000 rw-p 006d2000 00:00 0
006d6000-006e5000 r-xp 00000000 08:01 14909651 /lib/libresolv-2.5.so
006e5000-006e6000 r--p 0000e000 08:01 14909651 /lib/libresolv-2.5.so
006e6000-006e7000 rw-p 0000f000 08:01 14909651 /lib/libresolv-2.5.so
006e7000-006e9000 rw-p 006e7000 00:00 0
006ec000-006f0000 r-xp 00000000 08:01 6095958 /usr/lib/ruby/1.8/
i386-linux/stringio.so
006f0000-006f1000 rw-p 00003000 08:01 6095958 /usr/lib/ruby/1.8/
i386-linux/stringio.so
006f9000-00711000 r-xp 00000000 08:01 5621763 /usr/lib/libsasl2.so.
2.0.22
00711000-00712000 rw-p 00017000 08:01 5621763 /usr/lib/libsasl2.so.
2.0.22
007e6000-00821000 r-xp 00000000 08:01 6095951 /usr/lib/ruby/1.8/
i386-linux/openssl.so
00821000-00823000 rw-p 0003a000 08:01 6095951 /usr/lib/ruby/1.8/
i386-linux/openssl.so
008c0000-008c5000 r-xp 00000000 08:01 14909479 /lib/libcrypt-2.5.so
008c5000-008c6000 r--p 00004000 08:01 14909479 /lib/libcrypt-2.5.so
008c6000-008c7000 rw-p 00005000 08:01 14909479 /lib/libcrypt-2.5.so
008c7000-008ee000 rw-p 008c7000 00:00 0
008f0000-0091d000 r-xp 00000000 08:01 5614349 /usr/lib/
libgssapi_krb5.so.2.2
0091d000-0091e000 rw-p 0002d000 08:01 5614349 /usr/lib/
libgssapi_krb5.so.2.2
00937000-0093b000 r-xp 00000000 08:01 6095959 /usr/lib/ruby/1.8/
i386-linux/strscan.so
0093b000-0093c000 rw-p 00003000 08:01 6095959 /usr/lib/ruby/1.8/
i386-linux/strscan.so
00948000-00950000 r-xp 00000000 08:01 5622056 /usr/lib/
libkrb5support.so.0.1
00950000-00951000 rw-p 00007000 08:01 5622056 /usr/lib/
libkrb5support.so.0.1
00985000-00987000 r-xp 00000000 08:01 14909636 /lib/libkeyutils-1.2.so
00987000-00988000 rw-p 00001000 08:01 14909636 /lib/libkeyutils-1.2.so
00b21000-00bfd000 r-xp 00000000 08:01 5623120 /usr/lib/libruby.so.
1.8.5
00bfd000-00c01000 rw-p 000db000 08:01 5623120 /usr/lib/libruby.so.
1.8.5
00c01000-00c10000 rw-p 00c01000 00:00 0
00c22000-00c3d000 r-xp 00000000 08:01 6095960 /usr/lib/ruby/1.8/
i386-linux/syck.so
00c3d000-00c3e000 rw-p 0001b000 08:01 6095960 /usr/lib/ruby/1.8/
i386-linux/syck.so
00c91000-00c94000 r-xp 00000000 08:01 5609879 /usr/lib/libgpg-
error.so.0.3.0
00c94000-00c95000 rw-p 00002000 08:01 5609879 /usr/lib/libgpg-
error.so.0.3.0
00cda000-00cdc000 r-xp 00000000 08:01 6095945 /usr/lib/ruby/1.8/
i386-linux/etc.so
00cdc000-00cdd000 rw-p 00001000 08:01 6095945 /usr/lib/ruby/1.8/
i386-linux/etc.so
00d2f000-00d31000 r-xp 00000000 08:01 6193294 /usr/lib/ruby/1.8/
i386-linux/digest/md5.so
00d31000-00d32000 rw-p 00001000 08:01 6193294 /usr/lib/ruby/1.8/
i386-linux/digest/md5.so
00def000-00df3000 r-xp 00000000 08:01 6193993 /usr/lib/ruby/1.8/
i386-linux/digest/sha1.so
00df3000-00df4000 rw-p 00003000 08:01 6193993 /usr/lib/ruby/1.8/
i386-linux/digest/sha1.so
041f2000-04275000 r-xp 00000000 08:01 5618887 /usr/lib/libvirt.so.
0.4.2
04275000-04277000 rw-p 00083000 08:01 5618887 /usr/lib/libvirt.so.
0.4.2
04277000-04279000 rw-p 04277000 00:00 0
048f5000-04a12000 r-xp 00000000 08:01 14909468 /lib/libcrypto.so.
0.9.8b
04a12000-04a25000 rw-p 0011c000 08:01 14909468 /lib/libcrypto.so.
0.9.8b
04a25000-04a28000 rw-p 04a25000 00:00 0
04a9a000-04b2a000 r-xp 00000000 08:01 5614339 /usr/lib/libkrb5.so.3.3
04b2a000-04b2d000 rw-p 0008f000 08:01 5614339 /usr/lib/libkrb5.so.3.3
04b2f000-04b70000 r-xp 00000000 08:01 14909496 /lib/libssl.so.0.9.8b
04b70000-04b74000 rw-p 00040000 08:01 14909496 /lib/libssl.so.0.9.8b
08048000-08049000 r-xp 00000000 08:01 5623121 /usr/bin/ruby
08049000-0804a000 rw-p 00000000 08:01 5623121 /usr/bin/ruby
08279000-0860e000 rw-p 08279000 00:00 0
b7000000-b7021000 rw-p b7000000 00:00 0
b7021000-b7100000 ---p b7021000 00:00 0
b7147000-b7348000 rw-p b7147000 00:00 0
b7348000-b7349000 ---p b7348000 00:00 0
b7349000-b7e66000 rw-p b7349000 00:00 0
b7e67000-b7f06000 rw-p b7e67000 00:00 0
b7f06000-b7f3b000 r--s 00000000 08:01 10750807 /var/db/nscd/hosts
b7f3b000-b7fc6000 rw-p b7f3b000 00:00 0
b7fcc000-b7fd2000 rw-p b7fcc000 00:00 0
bf864000-bf8b6000 rw-p bf864000 00:00 0 [stack]
Aborted
--
"La perfection est atteinte non quand il ne reste rien a ajouter, mais
quand il ne reste rien a enlever." (Antoine de Saint-Exupery)
4
10
I have a dumb question about new error handling. What is the rationale
for using
'libvirt_message' instead of 'message' in new Libvirt Ruby error
classes?
Here is an example of code I am writing:
rescue SystemCallError
process($!.message)
...
rescue Libvirt::Error
process($!.libvirt_message)
...
instead of, shorter:
rescue Libvirt::Error, SystemCallError
process($!.message)
...
In reality, my rescue classes are bit longer, so the code gets hairy.
Wouldn't it be better to use standard 'message' attribute instead?
Sincerely,
Vadim
--
"La perfection est atteinte non quand il ne reste rien a ajouter, mais
quand il ne reste rien a enlever." (Antoine de Saint-Exupery)
3
4
Documentation for virConnectOpenAuth is a bit light at the moment. I
found:
http://libvirt.org/html/libvirt-libvirt.html#virConnectOpenAuth
http://libvirt.org/auth.html
This is the most serious omission from the documentation:
http://libvirt.org/html/libvirt-libvirt.html#virConnectAuthCallbackPtr
virConnectAuthPtrDefault is a default implementation of the callback
that you should use for command-line tools. It's used in virsh.c.
It's not documented at all, but the source for it (in libvirt.c) does
give a little bit of guidance.
Anyway, as long as there isn't some font of documentation for this
call which I've missed, I'll have a go at writing some while I write
the OCaml binding.
Rich.
--
Richard Jones, Emerging Technologies, Red Hat http://et.redhat.com/~rjones
virt-p2v converts physical machines to virtual machines. Boot with a
live CD or over the network (PXE) and turn machines into Xen guests.
http://et.redhat.com/~rjones/virt-p2v
2
1
What would be really useful is to allow paths (eg. to file-backed
block devices) to be relative in a useful way. This would let you
have the domain XML configuration file & the block device files sit
next to each other to give a machine description:
mydomain.hda.img
mydomain.xml # refers to <source file="mydomain.hda.img">
This isn't possible at the moment as far as I can tell, which means
you need to know which directory the files are located in, and you
can't move them around.
[As an aside, at present the QEMU driver makes no attempt to check
that the source file is an absolute path, it just passes whatever it
finds to the '-hdc' argument to qemu.]
For the command:
virsh define mydomain.xml
One implementation would be to have virsh rewriting paths, but that
requires special knowledge of the XML format in virsh so I don't think
it's a workable idea. Another would be to allow virsh to supply a
'base URI' (basically, the current directory) to the
virDomainDefineXML call.
Any thoughts?
Rich.
--
Richard Jones, Emerging Technologies, Red Hat http://et.redhat.com/~rjones
virt-top is 'top' for virtual machines. Tiny program with many
powerful monitoring features, net stats, disk stats, logging, etc.
http://et.redhat.com/~rjones/virt-top
2
1
Since I am kind of an idiot and don't know what I am doing...I am having
trouble with getting network stats to work in Python. I have everything
correct...but I am just not sure exactly what it is looking for. I get this
error:
libvir: Xen error : invalid argument in xenHypervisorDomainInterfaceStats:
invalid path, should be vif<domid>.<n>.
I guess I just need some kind of example to work from on this.
--
Spencer Parker
_______________________________________________________
"if you can't go to heaven, may you at least die in Ireland."
_______________________________________________________
2
3
10 Apr '08
I'm pleased to announce version 0.0.6 of the Ruby bindings for libvirt.
The most notable addition is support for the libvirt storage API. From
the NEWS file:
* Explicit free methods for various objects (based on a patch by
Vadim Zaliva)
* Make the FLAGS argument for various calls optional, and default it
to 0. (Chris Lalancette)
* More finegrained exceptions on errors, containing libvirt error
message
(Mohammed Morsi)
* Bindings for the libvirt storage API (requires libvirt 0.4.1)
* Suppress some bindings if the underlying libvirt doesn't support it
* Bindings for virDomainSetMemory, virDomainPinVcpu, and
virDomainSetVcpus (Vadim Zaliva)
The main site for ruby-libvirt is http://libvirt.org/ruby
API docs can be found at http://libvirt.org/ruby/api/index.html
Please send all your patches (and comments/questions) to this list.
David
1
0