[ovirt-users] Python-SDK4: Managing accents?

Fabrice Bacchella fabrice.bacchella at orange.fr
Mon Jun 12 13:48:14 UTC 2017


Did you try with python 3 ? UTF management changed a lot with this version, it might works better in your case.

> Le 12 juin 2017 à 12:33, nicolas at devels.es a écrit :
> 
> Hi,
> 
> We're running Python SDK (ovirt-engine-sdk-python) ver 4.1.4 and we're having some issues getting values that contain accents. For example, this snippet fails:
> 
>    import ovirtsdk4 as sdk
>    import ovirtsdk4.types as types
> 
>    # Create the connection to the server:
>    connection = sdk.Connection(
>        url='https://fqdn/ovirt-engine/api',
>        username='...',
>        password='...',
>        ca_file='...',
>        debug=True,
>    )
> 
>    users_service = connection.system_service().users_service()
>    users = users_service.list()
> 
>    connection.close()
> 
> This snippet fails in the "users = users_service.list()" line, because one of the records have a tilde (ó).
> 
> The trace is:
> Traceback (most recent call last):
>  File "lista_users", line 23, in <module>
>    users = users_service.list()
>  File "/home/ovirt/prueba/ejemplo2/lib/python2.7/site-packages/ovirtsdk4/services.py", line 22155, in list
>    return self._internal_get(headers, query, wait)
>  File "/home/ovirt/prueba/ejemplo2/lib/python2.7/site-packages/ovirtsdk4/service.py", line 202, in _internal_get
>    return future.wait() if wait else future
>  File "/home/ovirt/prueba/ejemplo2/lib/python2.7/site-packages/ovirtsdk4/service.py", line 53, in wait
>    return self._code(response)
>  File "/home/ovirt/prueba/ejemplo2/lib/python2.7/site-packages/ovirtsdk4/service.py", line 197, in callback
>    return self._internal_read_body(response)
>  File "/home/ovirt/prueba/ejemplo2/lib/python2.7/site-packages/ovirtsdk4/service.py", line 310, in _internal_read_body
>    return reader.Reader.read(response.body)
>  File "/home/ovirt/prueba/ejemplo2/lib/python2.7/site-packages/ovirtsdk4/reader.py", line 297, in read
>    cursor = xml.XmlReader(io.BytesIO(source.encode('utf-8')))
> UnicodeDecodeError: 'ascii' codec can't decode byte 0xc3 in position 1899: ordinal not in range(128)
> 
> Opening the source code (ovirtsdk4/reader.py) file and seeking the exact line that fails I can see:
> 
>        if isinstance(source, str):
>            cursor = xml.XmlReader(io.BytesIO(source.encode('utf-8')))
> 
> If I add a line just after the 'if' being "cursor = cursor.decode('utf-8')", it seems to work, but I guess the source code should handle this kind of situations.
> 
> Is this a known issue? Should I open a BZ? Any workaround meanwhile?
> 
> Thanks.
> _______________________________________________
> Users mailing list
> Users at ovirt.org
> http://lists.ovirt.org/mailman/listinfo/users



More information about the Users mailing list