On Wed, Aug 21, 2013 at 04:31:03PM -0300, 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
diff --git a/src/conf/domain_conf.c b/src/conf/domain_conf.c
index ea49d2c..461cc95 100644
--- a/src/conf/domain_conf.c
+++ b/src/conf/domain_conf.c
@@ -261,7 +261,8 @@ VIR_ENUM_IMPL(virDomainDiskProtocol, VIR_DOMAIN_DISK_PROTOCOL_LAST,
"rbd",
"sheepdog",
"gluster",
- "iscsi")
+ "iscsi",
+ "http")
VIR_ENUM_IMPL(virDomainDiskProtocolTransport, VIR_DOMAIN_DISK_PROTO_TRANS_LAST,
"tcp",
diff --git a/src/conf/domain_conf.h b/src/conf/domain_conf.h
index 500a5be..77fa00c 100644
--- a/src/conf/domain_conf.h
+++ b/src/conf/domain_conf.h
@@ -540,6 +540,7 @@ enum virDomainDiskProtocol {
VIR_DOMAIN_DISK_PROTOCOL_SHEEPDOG,
VIR_DOMAIN_DISK_PROTOCOL_GLUSTER,
VIR_DOMAIN_DISK_PROTOCOL_ISCSI,
+ VIR_DOMAIN_DISK_PROTOCOL_HTTP,
VIR_DOMAIN_DISK_PROTOCOL_LAST
};
diff --git a/src/qemu/qemu_command.c b/src/qemu/qemu_command.c
index f151173..a7c6c8e 100644
--- a/src/qemu/qemu_command.c
+++ 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);
+ }
No need for {} around case blocks which don't have local variables
defined. As Eric mentions, missing 'break' here.
While you're doing this, how about also adding 'ftp' protocol support ?
}
} else if (disk->type == VIR_DOMAIN_DISK_TYPE_VOLUME) {
if (qemuBuildVolumeString(conn, disk, &opt) < 0)
Daniel
--
|:
http://berrange.com -o-
http://www.flickr.com/photos/dberrange/ :|
|:
http://libvirt.org -o-
http://virt-manager.org :|
|:
http://autobuild.org -o-
http://search.cpan.org/~danberr/ :|
|:
http://entangle-photo.org -o-
http://live.gnome.org/gtk-vnc :|