On 08/21/2013 01:31 PM, Aline Manera wrote:
From: Aline Manera <alinefm(a)br.ibm.com>
QEMU/KVM already allows an HTTP URL for the cdrom ISO image so add this support
to libvirt as well.
The xml should be as following:
<disk type='network' device='cdrom'>
<source protocol='http' name='/url/path'>
<host name='host.name' port='80'/>
</source>
</disk>
Signed-off-by: Aline Manera <alinefm(a)br.ibm.com>
---
src/conf/domain_conf.c | 3 +-
src/conf/domain_conf.h | 1 +
src/qemu/qemu_command.c | 7 ++++
.../qemuxml2argv-disk-cdrom-network.args | 5 +++
.../qemuxml2argv-disk-cdrom-network.xml | 37 ++++++++++++++++++++
tests/qemuxml2argvtest.c | 2 ++
6 files changed, 54 insertions(+), 1 deletion(-)
create mode 100644 tests/qemuxml2argvdata/qemuxml2argv-disk-cdrom-network.args
create mode 100644 tests/qemuxml2argvdata/qemuxml2argv-disk-cdrom-network.xml
You also need to patch docs/schemas/domaincommon.rng to allow
'virt-xml-validate' to accept the new syntax, as well as
docs/formatdomain.html.in to describe how to use the new syntax. The
.rng portion is especially important, as your patch fails 'make check'
without it.
+++ b/src/qemu/qemu_command.c
@@ -3826,6 +3826,13 @@ qemuBuildDriveStr(virConnectPtr conn ATTRIBUTE_UNUSED,
virBufferEscape(&opt, ',', ",",
"%s,", disk->src);
}
break;
+
+ case VIR_DOMAIN_DISK_PROTOCOL_HTTP: {
+ virBufferAsprintf(&opt, "file=http://%s:%s",
+ disk->hosts->name,
+ disk->hosts->port ? disk->hosts->port :
"80");
+ virBufferEscape(&opt, ',', ",", "%s,",
disk->src);
+ }
Missing a break. Doesn't bite now, but makes future maintenance uglier.
+++ b/tests/qemuxml2argvdata/qemuxml2argv-disk-cdrom-network.args
@@ -0,0 +1,5 @@
+LC_ALL=C PATH=/bin HOME=/home/test USER=test LOGNAME=test /usr/bin/kvm -S \
+-M pc-1.2 -m 1024 -smp 1 -nographic -nodefaults \
+-monitor unix:/tmp/test-monitor,server,nowait -boot d -usb \
+-drive
file=http://mirror.cogentco.com:80/pub/linux/fedora/linux/releases/19/Fedora/x86_64/iso/Fedora-19-x86_64-netinst.iso,if=none,media=cdrom,id=drive-ide0-1-0
-device ide-drive,bus=ide.1,unit=0,drive=drive-ide0-1-0,id=ide0-1-0 \
+-device virtio-balloon-pci,id=balloon0,bus=pci.0,addr=0x3
Fails 'make syntax-check':
prohibit_long_lines
tests/qemuxml2argvdata/qemuxml2argv-disk-cdrom-network.args:4:-drive
file=http://mirror.cogentco.com:80/pub/linux/fedora/linux/releases/19/Fedora/x86_64/iso/Fedora-19-x86_64-netinst.iso,if=none,media=cdrom,id=drive-ide0-1-0
-device ide-drive,bus=ide.1,unit=0,drive=drive-ide0-1-0,id=ide0-1-0 \
maint.mk: Wrap long lines in expected output files
Getting closer, though :)
--
Eric Blake eblake redhat com +1-919-301-3266
Libvirt virtualization library
http://libvirt.org