create network with xml request and unicode failed

Bug #1160704 reported by Alex Xu
6
This bug affects 1 person
Affects Status Importance Assigned to Milestone
python-neutronclient
Fix Released
Undecided
Alex Xu

Bug Description

execute 'quantum net-create --request-format xml 中文' failed, error as below:

Traceback (most recent call last):
  File "/usr/lib/python2.7/logging/__init__.py", line 846, in emit
    msg = self.format(record)
  File "/usr/lib/python2.7/logging/__init__.py", line 723, in format
    return fmt.format(record)
  File "/usr/lib/python2.7/logging/__init__.py", line 464, in format
    record.message = record.getMessage()
  File "/usr/lib/python2.7/logging/__init__.py", line 328, in getMessage
    msg = msg % self.args
UnicodeDecodeError: 'ascii' codec can't decode byte 0xe7 in position 0: ordinal not in range(128)
Logged from file serializer.py, line 181
DEBUG: quantumclient.common.serializer Data True type is <type 'bool'>
ERROR: quantumclient.shell 'ascii' codec can't decode byte 0xe7 in position 0: ordinal not in range(128)
Traceback (most recent call last):
  File "/usr/local/lib/python2.7/dist-packages/python_quantumclient-2.2.0.8.g661aea1-py2.7.egg/quantumclient/shell.py", line 506, in run_subcommand
    return run_command(cmd, cmd_parser, sub_argv)
  File "/usr/local/lib/python2.7/dist-packages/python_quantumclient-2.2.0.8.g661aea1-py2.7.egg/quantumclient/shell.py", line 50, in run_command
    return cmd.run(known_args)
  File "/usr/local/lib/python2.7/dist-packages/python_quantumclient-2.2.0.8.g661aea1-py2.7.egg/quantumclient/common/command.py", line 35, in run
    return super(OpenStackCommand, self).run(parsed_args)
  File "/usr/local/lib/python2.7/dist-packages/cliff-1.3.1-py2.7.egg/cliff/display.py", line 84, in run
    column_names, data = self.take_action(parsed_args)
  File "/usr/local/lib/python2.7/dist-packages/python_quantumclient-2.2.0.8.g661aea1-py2.7.egg/quantumclient/common/command.py", line 41, in take_action
    return self.get_data(parsed_args)
  File "/usr/local/lib/python2.7/dist-packages/python_quantumclient-2.2.0.8.g661aea1-py2.7.egg/quantumclient/quantum/v2_0/__init__.py", line 331, in get_data
    data = obj_creator(body)
  File "/usr/local/lib/python2.7/dist-packages/python_quantumclient-2.2.0.8.g661aea1-py2.7.egg/quantumclient/v2_0/client.py", line 107, in with_params
    ret = self.function(instance, *args, **kwargs)
  File "/usr/local/lib/python2.7/dist-packages/python_quantumclient-2.2.0.8.g661aea1-py2.7.egg/quantumclient/v2_0/client.py", line 306, in create_network
    return self.post(self.networks_path, body=body)
  File "/usr/local/lib/python2.7/dist-packages/python_quantumclient-2.2.0.8.g661aea1-py2.7.egg/quantumclient/v2_0/client.py", line 987, in post
    headers=headers, params=params)
  File "/usr/local/lib/python2.7/dist-packages/python_quantumclient-2.2.0.8.g661aea1-py2.7.egg/quantumclient/v2_0/client.py", line 902, in do_request
    body = self.serialize(body)
  File "/usr/local/lib/python2.7/dist-packages/python_quantumclient-2.2.0.8.g661aea1-py2.7.egg/quantumclient/v2_0/client.py", line 933, in serialize
    self.get_attr_metadata()).serialize(data, self.content_type())
  File "/usr/local/lib/python2.7/dist-packages/python_quantumclient-2.2.0.8.g661aea1-py2.7.egg/quantumclient/common/serializer.py", line 374, in serialize
    return self._get_serialize_handler(content_type).serialize(data)
  File "/usr/local/lib/python2.7/dist-packages/python_quantumclient-2.2.0.8.g661aea1-py2.7.egg/quantumclient/common/serializer.py", line 51, in serialize
    return self.dispatch(data, action=action)
  File "/usr/local/lib/python2.7/dist-packages/python_quantumclient-2.2.0.8.g661aea1-py2.7.egg/quantumclient/common/serializer.py", line 41, in dispatch
    return action_method(*args, **kwargs)
  File "/usr/local/lib/python2.7/dist-packages/python_quantumclient-2.2.0.8.g661aea1-py2.7.egg/quantumclient/common/serializer.py", line 95, in default
    return self.to_xml_string(list(doc)[0], used_prefixes)
  File "/usr/local/lib/python2.7/dist-packages/python_quantumclient-2.2.0.8.g661aea1-py2.7.egg/quantumclient/common/serializer.py", line 108, in to_xml_string
    return etree.tostring(node, encoding='UTF-8')
  File "/usr/lib/python2.7/xml/etree/ElementTree.py", line 1127, in tostring
    ElementTree(element).write(file, encoding, method=method)
  File "/usr/lib/python2.7/xml/etree/ElementTree.py", line 821, in write
    serialize(write, self._root, encoding, qnames, namespaces)
  File "/usr/lib/python2.7/xml/etree/ElementTree.py", line 940, in _serialize_xml
    _serialize_xml(write, e, encoding, qnames, None)
  File "/usr/lib/python2.7/xml/etree/ElementTree.py", line 938, in _serialize_xml
    write(_escape_cdata(text, encoding))
  File "/usr/lib/python2.7/xml/etree/ElementTree.py", line 1074, in _escape_cdata
    return text.encode(encoding, "xmlcharrefreplace")
UnicodeDecodeError: 'ascii' codec can't decode byte 0xe7 in position 0: ordinal not in range(128)
DEBUG: quantumclient.shell clean_up CreateNetwork
DEBUG: quantumclient.shell got an error: 'ascii' codec can't decode byte 0xe7 in position 0: ordinal not in range(128)
'ascii' codec can't decode byte 0xe7 in position 0: ordinal not in range(128)

Alex Xu (xuhj)
Changed in python-quantumclient:
assignee: nobody → Alex Xu (xuhj)
summary: - create network with xml request failed
+ create network with xml request and unicode failed
Revision history for this message
OpenStack Infra (hudson-openstack) wrote : Fix proposed to python-quantumclient (master)

Fix proposed to branch: master
Review: https://review.openstack.org/25489

Changed in python-quantumclient:
status: New → In Progress
Alex Xu (xuhj)
description: updated
description: updated
Akihiro Motoki (amotoki)
Changed in python-quantumclient:
milestone: none → 2.2.1
Revision history for this message
OpenStack Infra (hudson-openstack) wrote : Fix merged to python-quantumclient (master)

Reviewed: https://review.openstack.org/25489
Committed: http://github.com/openstack/python-quantumclient/commit/4421ab10b88cceded6924bda4a76bb7ba326891f
Submitter: Jenkins
Branch: master

commit 4421ab10b88cceded6924bda4a76bb7ba326891f
Author: He Jie Xu <email address hidden>
Date: Mon Apr 1 13:27:28 2013 +0800

    Fix xml request doesn't work with unicode

    Fix bug 1160704

    * httplib2 doesn't work with unicode url and params. So encode all unicode
    to utf-8 before request.
    * Fix xml serializer doesn't work with unicode
    * Decode command argument to unicode in main function
    * Exception's message maybe include unicode, decode message to unicode
    before logging or print.
    * Sync the changing of serializer/deserilizer's code with quantum server code
      https://review.openstack.org/#/c/25482/
      https://review.openstack.org/#/c/25046/
      https://review.openstack.org/#/c/21410/
    * Enable xml test

    Change-Id: Ib140e34d54cc916e2ea172e4bad9e4a77388723a

Changed in python-quantumclient:
status: In Progress → Fix Committed
Akihiro Motoki (amotoki)
Changed in python-neutronclient:
status: Fix Committed → Fix Released
To post a comment you must log in.
This report contains Public information  
Everyone can see this information.

Other bug subscribers

Remote bug watches

Bug watches keep track of this bug in other bug trackers.