Reviewed-by: Aline Manera <alinefm(a)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(a)gmail.com wrote:
> From: Royce Lv <lvroyce(a)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(a)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(a)ovirt.org
http://lists.ovirt.org/mailman/listinfo/kimchi-devel