[Kimchi-devel] [PATCH] Choose disk image type in vm template - backend
Aline Manera
alinefm at linux.vnet.ibm.com
Tue Sep 16 23:58:14 UTC 2014
On 09/04/2014 05:50 PM, Daniel Henrique Barboza wrote:
> These changes implements the backend support for setting the disk
> image type in the VM template, by using a new parameter called
> "type" in the 'disk' object of the template_create schema.
>
> If the parameter is not used, the template will use the default
> disk type (qcow2).
>
> Signed-off-by: Daniel Henrique Barboza <danielhb at linux.vnet.ibm.com>
> ---
> docs/API.md | 1 +
> src/kimchi/API.json | 12 ++++++++++++
> src/kimchi/i18n.py | 1 +
> src/kimchi/vmtemplate.py | 5 ++++-
> 4 files changed, 18 insertions(+), 1 deletion(-)
>
> diff --git a/docs/API.md b/docs/API.md
> index 298441f..11dba67 100644
> --- a/docs/API.md
> +++ b/docs/API.md
> @@ -195,6 +195,7 @@ Represents a snapshot of the Virtual Machine's primary monitor.
> * index: The device index
> * size: The device size in GB
> * base: Base image of this disk
> + * type: Type of the image (qcow2 or raw)
From libvirt the supported formats are: "raw", "bochs", "qcow",
"qcow2", "qed", "vmdk"
Shouldn't we support all those too?
>
> * graphics *(optional)*: The graphics paramenters of this template
> * type: The type of graphics. It can be VNC or spice or None.
> diff --git a/src/kimchi/API.json b/src/kimchi/API.json
> index 2e2f9b0..67ffaf7 100644
> --- a/src/kimchi/API.json
> +++ b/src/kimchi/API.json
> @@ -419,6 +419,12 @@
> "type": "string",
> "pattern": "^/.+$",
> "error": "KCHTMPL0023E"
> + },
> + "type": {
> + "description": "Type of the image of the disk",
> + "type": "string",
> + "pattern": "^qcow2|raw$",
> + "error": "KCHTMPL0025E"
> }
>
> }
> @@ -590,6 +596,12 @@
> "type": "number",
> "minimum": 1,
> "error": "KCHTMPL0022E"
> + },
> + "type": {
> + "description": "Type of the image of the disk",
> + "type": "string",
> + "pattern": "^qcow2|raw$",
> + "error": "KCHTMPL0025E"
> }
> }
> },
> diff --git a/src/kimchi/i18n.py b/src/kimchi/i18n.py
> index 1e8b47a..9c81ea0 100644
> --- a/src/kimchi/i18n.py
> +++ b/src/kimchi/i18n.py
> @@ -130,6 +130,7 @@ messages = {
> "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"),
> + "KCHTMPL0025E": _("Invalid disk image type. Types supported: 'qcow2', 'raw'"),
>
> "KCHPOOL0001E": _("Storage pool %(name)s already exists"),
> "KCHPOOL0002E": _("Storage pool %(name)s does not exist"),
> diff --git a/src/kimchi/vmtemplate.py b/src/kimchi/vmtemplate.py
> index c5bb7b3..9b8349d 100644
> --- a/src/kimchi/vmtemplate.py
> +++ b/src/kimchi/vmtemplate.py
> @@ -195,7 +195,10 @@ drive=drive-%(bus)s0-1-0,id=%(bus)s0-1-0'/>
> src = os.path.join(storage_path, volume)
> dev = "%s%s" % (self._bus_to_dev[self.info['disk_bus']],
> string.lowercase[index])
> - fmt = 'raw' if self._get_storage_type() in ['logical'] else 'qcow2'
> + if self._get_storage_type() in ['logical']:
> + fmt = 'raw'
> + else:
> + fmt = disk.get('type', 'qcow2')
If user passes a different type of 'raw' to a logical volume we should
raise an error.
> params = {'src': src, 'dev': dev, 'bus': self.info['disk_bus'],
> 'type': fmt}
> ret += """
More information about the Kimchi-devel
mailing list