[Kimchi-devel] [PATCHv3 1/5] Fix vm disk path when it does not have source element

Aline Manera alinefm at linux.vnet.ibm.com
Tue Feb 25 17:40:48 UTC 2014


On 02/25/2014 05:35 AM, lvroyce at linux.vnet.ibm.com wrote:
> From: Royce Lv <lvroyce at linux.vnet.ibm.com>
>
> When vm disk does not have source element,
> objectify library will error with 'no such element: source'
> Trap this exception.
>
> Signed-off-by: Royce Lv <lvroyce at linux.vnet.ibm.com>
> ---
>   src/kimchi/model/vmstorages.py | 23 +++++++++++++----------
>   1 file changed, 13 insertions(+), 10 deletions(-)
>
> diff --git a/src/kimchi/model/vmstorages.py b/src/kimchi/model/vmstorages.py
> index 7796f30..44b49df 100644
> --- a/src/kimchi/model/vmstorages.py
> +++ b/src/kimchi/model/vmstorages.py
> @@ -167,17 +167,20 @@ class VMStorageModel(object):
>           if disk is None:
>               raise NotFoundError("KCHCDROM0007E", {'dev_name': dev_name,
>                                                     'vm_name': vm_name})
> -        source = disk.source
>           path = ""
> -        if source is not None:
> -            src_type = disk.attrib['type']
> -            if src_type == 'network':
> -                host = source.host
> -                path = (source.attrib['protocol'] + '://' +
> -                        host.attrib['name'] + ':' +
> -                        host.attrib['port'] + source.attrib['name'])
> -            else:
> -                path = source.attrib[DEV_TYPE_SRC_ATTR_MAP[src_type]]
> +        try:
> +            source = disk.source
> +            if source is not None:
> +                src_type = disk.attrib['type']
> +                if src_type == 'network':
> +                    host = source.host
> +                    path = (source.attrib['protocol'] + '://' +
> +                            host.attrib['name'] + ':' +
> +                            host.attrib['port'] + source.attrib['name'])
> +                else:
> +                    path = source.attrib[DEV_TYPE_SRC_ATTR_MAP[src_type]]
> +        except:
> +            pass
>           dev_type = disk.attrib['device']
>           return {'dev': dev_name,
>                   'type': dev_type,

Q. When is there no 'source' element?

And independent on that, we still need to return the 'path' in addition 
to 'dev' and 'type'






More information about the Kimchi-devel mailing list