[libvirt] [PATCH] tests: new test: virsh-synopsis
by Jim Meyering
I wanted help SYNOPSIS output that was regular enough to parse.
Enforcing/correcting the following is the first step:
>From fa58b801ea80f52a10d48ab75a359ffe06c4be40 Mon Sep 17 00:00:00 2001
From: Jim Meyering <meyering(a)redhat.com>
Date: Fri, 21 Nov 2008 10:58:36 +0100
Subject: [PATCH] tests: new test: virsh-synopsis
* tests/virsh-synopsis: new file
* tests/Makefile.am (test_scripts): Add virsh-synopsis.
* src/virsh.c: Correct help SYNOPSIS for each of seven commands.
When I first ran this script, "make check" failed like this:
...
invalid help SYNOPSIS for net-create:
create a network from an XML <file>
invalid help SYNOPSIS for net-define:
define a network from an XML <file>
invalid help SYNOPSIS for net-start:
start <network>
invalid help SYNOPSIS for pool-create:
create a pool from an XML <file>
invalid help SYNOPSIS for pool-define:
define a pool from an XML <file>
invalid help SYNOPSIS for pool-start:
start <pool>
invalid help SYNOPSIS for vol-create:
create <file>
FAIL: virsh-synopsis
---
src/virsh.c | 17 +++++++++--------
tests/Makefile.am | 1 +
tests/virsh-synopsis | 43 +++++++++++++++++++++++++++++++++++++++++++
3 files changed, 53 insertions(+), 8 deletions(-)
create mode 100755 tests/virsh-synopsis
diff --git a/src/virsh.c b/src/virsh.c
index 4195781..78c536e 100644
--- a/src/virsh.c
+++ b/src/virsh.c
@@ -2365,7 +2365,7 @@ cmdNetworkAutostart(vshControl *ctl, const vshCmd *cmd)
* "net-create" command
*/
static const vshCmdInfo info_network_create[] = {
- {"syntax", "create a network from an XML <file>"},
+ {"syntax", "net-create <file>"},
{"help", gettext_noop("create a network from an XML file")},
{"desc", gettext_noop("Create a network.")},
{NULL, NULL}
@@ -2413,7 +2413,7 @@ cmdNetworkCreate(vshControl *ctl, const vshCmd *cmd)
* "net-define" command
*/
static const vshCmdInfo info_network_define[] = {
- {"syntax", "define a network from an XML <file>"},
+ {"syntax", "net-define <file>"},
{"help", gettext_noop("define (but don't start) a network from an XML file")},
{"desc", gettext_noop("Define a network.")},
{NULL, NULL}
@@ -2697,7 +2697,7 @@ cmdNetworkName(vshControl *ctl, const vshCmd *cmd)
* "net-start" command
*/
static const vshCmdInfo info_network_start[] = {
- {"syntax", "start <network>"},
+ {"syntax", "net-start <network>"},
{"help", gettext_noop("start a (previously defined) inactive network")},
{"desc", gettext_noop("Start a network.")},
{NULL, NULL}
@@ -2862,14 +2862,15 @@ cmdPoolAutostart(vshControl *ctl, const vshCmd *cmd)
* "pool-create" command
*/
static const vshCmdInfo info_pool_create[] = {
- {"syntax", "create a pool from an XML <file>"},
+ {"syntax", "pool-create <file>"},
{"help", gettext_noop("create a pool from an XML file")},
{"desc", gettext_noop("Create a pool.")},
{NULL, NULL}
};
static const vshCmdOptDef opts_pool_create[] = {
- {"file", VSH_OT_DATA, VSH_OFLAG_REQ, gettext_noop("file containing an XML pool description")},
+ {"file", VSH_OT_DATA, VSH_OFLAG_REQ,
+ gettext_noop("file containing an XML pool description")},
{NULL, 0, 0, NULL}
};
@@ -3000,7 +3001,7 @@ cmdPoolCreateAs(vshControl *ctl, const vshCmd *cmd)
* "pool-define" command
*/
static const vshCmdInfo info_pool_define[] = {
- {"syntax", "define a pool from an XML <file>"},
+ {"syntax", "pool-define <file>"},
{"help", gettext_noop("define (but don't start) a pool from an XML file")},
{"desc", gettext_noop("Define a pool.")},
{NULL, NULL}
@@ -3727,7 +3728,7 @@ cmdPoolName(vshControl *ctl, const vshCmd *cmd)
* "pool-start" command
*/
static const vshCmdInfo info_pool_start[] = {
- {"syntax", "start <pool>"},
+ {"syntax", "pool-start <pool>"},
{"help", gettext_noop("start a (previously defined) inactive pool")},
{"desc", gettext_noop("Start a pool.")},
{NULL, NULL}
@@ -3965,7 +3966,7 @@ cmdPoolUuid(vshControl *ctl, const vshCmd *cmd)
* "vol-create" command
*/
static const vshCmdInfo info_vol_create[] = {
- {"syntax", "create <file>"},
+ {"syntax", "vol-create <file>"},
{"help", gettext_noop("create a vol from an XML file")},
{"desc", gettext_noop("Create a vol.")},
{NULL, NULL}
diff --git a/tests/Makefile.am b/tests/Makefile.am
index 0b4eebd..bec3791 100644
--- a/tests/Makefile.am
+++ b/tests/Makefile.am
@@ -58,6 +58,7 @@ test_scripts += \
undefine \
vcpupin
virsh-all
+ virsh-synopsis
endif
EXTRA_DIST += $(test_scripts)
diff --git a/tests/virsh-synopsis b/tests/virsh-synopsis
new file mode 100755
index 0000000..6ce58a2
--- /dev/null
+++ b/tests/virsh-synopsis
@@ -0,0 +1,43 @@
+#!/bin/sh
+# ensure that each command's help "SYNOPSIS" line starts with the command name
+
+# Copyright (C) 2008 Free Software Foundation, Inc.
+
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with this program. If not, see <http://www.gnu.org/licenses/>.
+
+if test "$VERBOSE" = yes; then
+ set -x
+ virsh --version
+fi
+
+. $srcdir/test-lib.sh
+
+fail=0
+
+test_url=test:///default
+
+virsh -c $test_url help > cmds || framework_failure
+cmds=$(sed -n 's/^ \([^ ][^ ]*\) .*/\1/p' cmds) || framework_failure
+test -n "$cmds" || framework_failure
+
+for i in $cmds; do
+ virsh -c $test_url help $i > help || fail=1
+ grep -A1 '^ SYNOPSIS$' help > synopsis \
+ || { echo 1>&2 missing or invalid help SYNOPSIS for $i; fail=1; }
+ sed -n 2p synopsis > s2 || framework_failure
+ grep -E "^ $i( |$)" s2 > /dev/null \
+ || { echo 1>&2 "invalid help SYNOPSIS for $i:"; cat s2 1>&2; fail=1; }
+done
+
+(exit $fail); exit $fail
--
1.6.0.4.1021.g4320
16 years
[libvirt] [PATCH] fix EventImpl-related error paths in remote driver
by David Lively
This patch makes the remote driver behave properly in the face of:
(a) no registered EventImpl, or
(b) an EventImpl that returns failure from AddHandle/Timeout
In both cases, we now cleanup properly (rather than always passing bogus
values to virEventRemoveHandle/Timeout) and fail attempts to register
for domain events (w/VIR_ERR_NO_SUPPORT rather than blissfully continue
when we can't possibly deliver events).
Dave
remote_internal.c | 15 +++++++++++----
1 file changed, 11 insertions(+), 4 deletions(-)
16 years
[libvirt] [PATCH] fix libvirtd crash in qemu driver
by David Lively
I noticed that the following sequence of events would crash libvirtd
when using the qemu driver:
(1) establish a connection that successfully registers for domain
events (either of the event-test programs will do, though the
python one is currently broken -- another patch on the way for
that)
(2) close this connection
(3) open another connection
(4) do something (like start a domain) that issues a domain event
The problem is that qemudClose() isn't removing registered domain event
callbacks when the connection closes. This patch does that, and fixes
the crash.
Dave
domain_event.c | 38 ++++++++++++++++++++++++++++++++++++++
domain_event.h | 3 +++
qemu_driver.c | 5 ++++-
3 files changed, 45 insertions(+), 1 deletion(-)
16 years
[libvirt] Relax requirement of bridge source device
by Jim Fehlig
Hi All,
I wanted to get folks thoughts on relaxing the requirement for bridge
source device in network interface of domain XML, e.g. allowing
<interface type="bridge">
<mac address="aa:bb:cc:cc:ee:ff"/>
</interface>
Currently, virDomainNetDefParseXML() in src/domain_conf.c will fail such
configuration. Since this is common code between backends I'm not sure
how allowing this config will affect the various virtualizers.
Xen's vif-bridge script will try to find a bridge if one is not
specified, which perhaps is dubious behavior, but nonetheless convenient
in migration scenarios where the target host may have a different bridge
name (br1 vs br0 for example). IIRC, qemu's qemu-ifup script is not as
forgiving in the absence of a bridge name.
I would be happy to provide a patch if relaxing the source device
requirement is acceptable.
Thanks,
Jim
16 years
[libvirt] libvirt equivalent config for a kvm command line
by Rajkumar S
Hi,
I had been running kvm in a previous version of Ubuntu with the
following command line:
/usr/bin/kvm
-hda /mnt/kvm/vm-images-work/nanobsd.img
-net nic,vlan=26,macaddr=52:54:00:12:34:26 -net tap,vlan=26,ifname=tap26
-net nic,vlan=27,macaddr=52:54:00:12:34:27 -net tap,vlan=27,ifname=tap27
-net nic,vlan=28,macaddr=52:54:00:12:34:28 -net tap,vlan=28,ifname=tap28
-m 640 -vnc :26 -usbdevice tablet
The vm shows couple if lines in console and then redirects rest of the
output to serial console. I can see that in ctrl-alt-3 of vncviewer
ctrl-alt-2 gives access to emulation console and 4 gives access to
parallel console.
After upgrading to latest Intrepid Ibex I decided to move to using
virsh to manage my vms. For the above vm I am using the following xml
file.
<domain type='kvm'>
<name>nanobsd</name>
<memory>262144</memory>
<currentMemory>262144</currentMemory>
<vcpu>1</vcpu>
<os>
<type>hvm</type>
<boot dev='hd'/>
</os>
<features>
<acpi/>
</features>
<clock offset='localtime'/>
<on_poweroff>destroy</on_poweroff>
<on_reboot>restart</on_reboot>
<on_crash>destroy</on_crash>
<devices>
<emulator>/usr/bin/kvm</emulator>
<disk type='file' device='disk'>
<source file='/mnt/kvm/vm-images-work/nanotest.img'/>
<target dev='hda' bus='ide'/>
</disk>
<interface type='bridge'>
<mac address='52:54:00:12:34:31'/>
<source bridge='br0'/>
</interface>
<interface type='bridge'>
<mac address='52:54:00:12:34:32'/>
<source bridge='br0'/>
</interface>
<interface type='bridge'>
<mac address='52:54:00:12:34:33'/>
<source bridge='br0'/>
</interface>
<serial type='vc'>
<target port='2'/>
</serial>
<console type='pty'>
<target port='0'/>
</console>
<input type='mouse' bus='ps2'/>
<graphics type='vnc' port='5931' listen='192.168.3.3'/>
</devices>
</domain>
Which produces the following command line.
/usr/bin/kvm -S -M pc -m 256 -smp 1 -name nanobsd -monitor pty
-localtime -boot c
-drive file=/mnt/kvm/vm-images-work/nanotest.img,if=ide,index=0,boot=on
-net nic,macaddr=52:54:00:12:34:31,vlan=0 -net
tap,fd=28,script=,vlan=0,ifname=vnet5
-net nic,macaddr=52:54:00:12:34:32,vlan=1 -net
tap,fd=29,script=,vlan=1,ifname=vnet6
-net nic,macaddr=52:54:00:12:34:33,vlan=2 -net
tap,fd=30,script=,vlan=2,ifname=vnet7
-serial vc -parallel none -usb -vnc 192.168.3.3:31
Problem with this configuration is that the screen freezes after
couple of minuets of booting, I am not sure if this is the problem
with the serial console or actual execution. I can see the serial
console in ctrl-alt-2, but the window size changes. The image works
perfectly in normal PC as well as if I use the previous command line.
I guess I am missing some thing here, but I would be very happy if I
can get the old behaviour back :)
raj
16 years