[libvirt] [PATCH] Allow a HTTP URL for cdrom ISO image

Aline Manera alinefm at linux.vnet.ibm.com
Thu Aug 22 18:09:03 UTC 2013


On 08/22/2013 10:01 AM, Daniel P. Berrange wrote:
> On Wed, Aug 21, 2013 at 04:31:03PM -0300, Aline Manera wrote:
>> From: Aline Manera <alinefm at 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 at 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 ?

Sure! I will do a patch for it too.

>
>>               }
>>           } else if (disk->type == VIR_DOMAIN_DISK_TYPE_VOLUME) {
>>               if (qemuBuildVolumeString(conn, disk, &opt) < 0)
> Daniel




More information about the libvir-list mailing list