[Kimchi-devel] [PATCHv2] Issue#536: raise proper error message when disk os info absent
Daniel Henrique Barboza
danielhb at linux.vnet.ibm.com
Thu Dec 11 13:08:30 UTC 2014
Reviewed-by: Daniel Barboza <danielhb at linux.vnet.ibm.com>
On 12/11/2014 05:05 AM, lvroyce at linux.vnet.ibm.com wrote:
> From: Royce Lv <lvroyce at linux.vnet.ibm.com>
>
> When disk os cannot be decided by libguestfs,
> it will leave it to 'unknown' distro and version.
> But if no boot information available,
> ImageFormatError is left unhandled and this will introduce
> 500 error when disk os info is absent.
> Handle this error to fix this.
>
> Signed-off-by: Royce Lv <lvroyce at linux.vnet.ibm.com>
> ---
> src/kimchi/vmtemplate.py | 6 +++++-
> tests/test_model.py | 2 +-
> 2 files changed, 6 insertions(+), 2 deletions(-)
>
> diff --git a/src/kimchi/vmtemplate.py b/src/kimchi/vmtemplate.py
> index 8582d48..3266e7b 100644
> --- a/src/kimchi/vmtemplate.py
> +++ b/src/kimchi/vmtemplate.py
> @@ -29,6 +29,7 @@ from lxml.builder import E
> from kimchi import imageinfo
> from kimchi import osinfo
> from kimchi.exception import InvalidParameter, IsoFormatError, MissingParameter
> +from kimchi.exception import ImageFormatError, OperationFailed
> from kimchi.isoinfo import IsoImage
> from kimchi.utils import check_url_path, pool_name_from_uri
> from kimchi.xmlutils.disk import get_disk_xml
> @@ -51,7 +52,10 @@ class VMTemplate(object):
> self.fc_host_support = args.get('fc_host_support')
>
> # Fetch defaults based on the os distro and version
> - distro, version = self._get_os_info(args, scan)
> + try:
> + distro, version = self._get_os_info(args, scan)
> + except ImageFormatError as e:
> + raise OperationFailed('KCHTMPL0020E', {'err': e.message})
> os_distro = args.get('os_distro', distro)
> os_version = args.get('os_version', version)
> entry = osinfo.lookup(os_distro, os_version)
> diff --git a/tests/test_model.py b/tests/test_model.py
> index aa2a1bb..2bcb075 100644
> --- a/tests/test_model.py
> +++ b/tests/test_model.py
> @@ -196,7 +196,7 @@ class ModelTests(unittest.TestCase):
> vol_path = inst.storagevolume_lookup('default', vol)['path']
>
> params = {'name': 'test', 'disks': [{'base': vol_path}]}
> - self.assertRaises(ImageFormatError, inst.templates_create, params)
> + self.assertRaises(OperationFailed, inst.templates_create, params)
>
> # Hack the model objstore to add a new template
> # It is needed as the image file must be a bootable image when
More information about the Kimchi-devel
mailing list