[Kimchi-devel] [PATCH] Prevent ascii error when volume name has unsupported characters

Sheldon shaohef at linux.vnet.ibm.com
Fri Jun 6 05:35:12 UTC 2014


On 06/05/2014 10:07 PM, Rodrigo Trujillo wrote:
> During ISO search (Template creation window), kimchi search volumes in
> storagepools and it encodes every file name found. If some file has
> unsupported characters, an error is raised and none ISO is presented to
> user.
> This patch fixes this error.
I think, that's because some iso with non-acsii name .
I have send a patch, and it is merged today, not sure it can fix your 
issue.
bug fix: decode volume name in IsoVolumesModel.
>
> Signed-off-by: Rodrigo Trujillo <rodrigo.trujillo at linux.vnet.ibm.com>
> ---
>   src/kimchi/model/storagevolumes.py | 8 ++++++++
>   1 file changed, 8 insertions(+)
>
> diff --git a/src/kimchi/model/storagevolumes.py b/src/kimchi/model/storagevolumes.py
> index d58fd0b..ab8e2fa 100644
> --- a/src/kimchi/model/storagevolumes.py
> +++ b/src/kimchi/model/storagevolumes.py
> @@ -114,6 +114,10 @@ class StorageVolumeModel(object):
>               raise InvalidOperation("KCHVOL0006E", {'name': pool})
>           try:
>               return pool.storageVolLookupByName(name.encode("utf-8"))
> +        except UnicodeDecodeError as e:
> +            msg = 'Unable to encode file name "%s" from pool "%s":\n   %s'
> +            kimchi_log.warn(msg %(name, poolname, str(e)))
> +            return None
>           except libvirt.libvirtError as e:
>               if e.get_error_code() == libvirt.VIR_ERR_NO_STORAGE_VOL:
>                   raise NotFoundError("KCHVOL0002E", {'name': name,
> @@ -151,6 +155,8 @@ class StorageVolumeModel(object):
>
>       def lookup(self, pool, name):
>           vol = self._get_storagevolume(pool, name)
> +        if not vol:
> +            return None
>           path = vol.path()
>           info = vol.info()
>           xml = vol.XMLDesc(0)
> @@ -240,6 +246,8 @@ class IsoVolumesModel(object):
>
>               for volume in volumes:
>                   res = self.storagevolume.lookup(pool_name, volume)
> +                if res is None:
> +                    continue
>                   if res['format'] == 'iso':
>                       res['name'] = '%s' % volume
>                       iso_volumes.append(res)


-- 
Thanks and best regards!

Sheldon Feng(冯少合)<shaohef at linux.vnet.ibm.com>
IBM Linux Technology Center




More information about the Kimchi-devel mailing list