[Kimchi-devel] [PATCHv3 6/8] Create volume based on backing store image

Royce Lv lvroyce at linux.vnet.ibm.com
Wed Jul 23 02:27:10 UTC 2014


On 2014年07月22日 02:16, Aline Manera wrote:
>
> Reviewed-by: Aline Manera <alinefm at linux.vnet.ibm.com>
>
> Question: Do you know what is needed to have it working for iscsi and 
> scsi pools?
We can refer to vdsm of how to work with iscsi/scsi pool, but larger 
volume of 'iscsi' or 'scsi' need to be handled by cloud init as 
openstack did.
Just leave 'size' and work with volume will be easy to finish I suppose.
>
> On 07/20/2014 12:08 PM, lvroyce0210 at gmail.com wrote:
>> From: Royce Lv <lvroyce at linux.vnet.ibm.com>
>>
>> Creating volume base on backing store so that we can create
>> vm from this cow volume. Also change volume xml generation method
>> to lxml.
>>
>> Signed-off-by: Royce Lv <lvroyce at linux.vnet.ibm.com>
>> ---
>> src/kimchi/i18n.py | 1 +
>> src/kimchi/model/vms.py | 1 +
>> src/kimchi/vmtemplate.py | 31 +++++++++++++++++++------------
>> 3 files changed, 21 insertions(+), 12 deletions(-)
>>
>> diff --git a/src/kimchi/i18n.py b/src/kimchi/i18n.py
>> index f872bee..1f70767 100644
>> --- a/src/kimchi/i18n.py
>> +++ b/src/kimchi/i18n.py
>> @@ -126,6 +126,7 @@ messages = {
>> "KCHTMPL0021E": _("Unable to delete template due error: %(err)s"),
>> "KCHTMPL0022E": _("Disk size must be greater than 1GB."),
>> "KCHTMPL0023E": _("Template base image must be a valid local image 
>> file"),
>> + "KCHTMPL0024E": _("Cannot identify base image %(path)s format"),
>>
>> "KCHPOOL0001E": _("Storage pool %(name)s already exists"),
>> "KCHPOOL0002E": _("Storage pool %(name)s does not exist"),
>> diff --git a/src/kimchi/model/vms.py b/src/kimchi/model/vms.py
>> index 8c0dcb1..7d975b2 100644
>> --- a/src/kimchi/model/vms.py
>> +++ b/src/kimchi/model/vms.py
>> @@ -201,6 +201,7 @@ class VMsModel(object):
>> # the user from UI or manually.
>> vol_list = []
>> if t._get_storage_type() in ["iscsi", "scsi"]:
>> + # FIXME: iscsi and scsi storage work with base image needs to be 
>> fixed.
>> vol_list = []
>> else:
>> vol_list = t.fork_vm_storage(vm_uuid)
>> diff --git a/src/kimchi/vmtemplate.py b/src/kimchi/vmtemplate.py
>> index 9e8ed3d..b17e3ff 100644
>> --- a/src/kimchi/vmtemplate.py
>> +++ b/src/kimchi/vmtemplate.py
>> @@ -265,19 +265,26 @@ drive=drive-%(bus)s0-1-0,id=%(bus)s0-1-0'/>
>> 'type': 'disk',
>> 'format': fmt,
>> 'path': '%s/%s' % (storage_path, volume)}
>> -
>> info['allocation'] = 0 if fmt == 'qcow2' else info['capacity']
>> - info['xml'] = """
>> - <volume>
>> - <name>%(name)s</name>
>> - <allocation unit="G">%(allocation)s</allocation>
>> - <capacity unit="G">%(capacity)s</capacity>
>> - <target>
>> - <format type='%(format)s'/>
>> - <path>%(path)s</path>
>> - </target>
>> - </volume>
>> - """ % info
>> +
>> + if 'base' in d:
>> + info['base'] = dict()
>> + base_fmt = probe_img_info(d['base'])['format']
>> + if base_fmt is None:
>> + raise InvalidParameter("KCHTMPL0024E", {'path': d['base']})
>> + info['base']['path'] = d['base']
>> + info['base']['format'] = base_fmt
>> +
>> + v_tree = E.volume(E.name(info['name']))
>> + v_tree.append(E.allocation(str(info['allocation']), unit='G'))
>> + v_tree.append(E.capacity(str(info['capacity']), unit='G'))
>> + target = E.target(
>> + E.format(type=info['format']), E.path(info['path']))
>> + if 'base' in d:
>> + v_tree.append(E.backingStore(
>> + E.path(info['base']['path']), E.format(type=info['base']['format'])))
>> + v_tree.append(target)
>> + info['xml'] = etree.tostring(v_tree)
>> ret.append(info)
>> return ret
>>
>
> _______________________________________________
> Kimchi-devel mailing list
> Kimchi-devel at ovirt.org
> http://lists.ovirt.org/mailman/listinfo/kimchi-devel
>




More information about the Kimchi-devel mailing list