Comment 3 for bug 898808

Revision history for this message
Gabe Westmaas (westmaas) wrote :

This is definitely an issue. What is the right expectation here? If a customer specifies unicode in the server name, the unix hostname will not contain those characters, correct? What if all the characters are unicode? In addition, I think the initial migrations might have to be changed, since this affects how they are stored in the db. I haven't traced this at all, but I don't think its straightforward to support unicode. In the meantime perhaps we should disallow users from using unicode in the hostname.

Here's a Traceback just for fun:

2012-01-15 12:38:35,641 ERROR nova.api.openstack.v2 [f00369f6-ec7d-4239-b71d-b6d6affd300a username projectid] Caught error: 'utf8' codec can't decode byte 0xa8 in position 5: invalid start byte
(nova.api.openstack.v2): TRACE: Traceback (most recent call last):
(nova.api.openstack.v2): TRACE: File "/usr/lib/pymodules/python2.6/nova/api/openstack/v2/__init__.py", line 59, in __call__
(nova.api.openstack.v2): TRACE: return req.get_response(self.application)
(nova.api.openstack.v2): TRACE: File "/usr/lib/pymodules/python2.6/webob/request.py", line 919, in get_response
(nova.api.openstack.v2): TRACE: application, catch_exc_info=False)
(nova.api.openstack.v2): TRACE: File "/usr/lib/pymodules/python2.6/webob/request.py", line 887, in call_application
(nova.api.openstack.v2): TRACE: app_iter = application(self.environ, start_response)
(nova.api.openstack.v2): TRACE: File "/usr/lib/python2.6/dist-packages/keystone/middleware/auth_token.py", line 209, in __call__
(nova.api.openstack.v2): TRACE: return self._forward_request(env, start_response, proxy_headers)
(nova.api.openstack.v2): TRACE: File "/usr/lib/python2.6/dist-packages/keystone/middleware/auth_token.py", line 325, in _forward_request
(nova.api.openstack.v2): TRACE: return self.app(env, start_response)
(nova.api.openstack.v2): TRACE: File "/usr/lib/pymodules/python2.6/webob/dec.py", line 159, in __call__
(nova.api.openstack.v2): TRACE: return resp(environ, start_response)
(nova.api.openstack.v2): TRACE: File "/usr/lib/pymodules/python2.6/webob/dec.py", line 147, in __call__
(nova.api.openstack.v2): TRACE: resp = self.call_func(req, *args, **self.kwargs)
(nova.api.openstack.v2): TRACE: File "/usr/lib/pymodules/python2.6/webob/dec.py", line 208, in call_func
(nova.api.openstack.v2): TRACE: return self.func(req, *args, **kwargs)
(nova.api.openstack.v2): TRACE: File "/usr/lib/pymodules/python2.6/nova/api/openstack/wsgi.py", line 501, in __call__
(nova.api.openstack.v2): TRACE: response = req.get_response(self.application)
(nova.api.openstack.v2): TRACE: File "/usr/lib/pymodules/python2.6/webob/request.py", line 919, in get_response
(nova.api.openstack.v2): TRACE: application, catch_exc_info=False)
(nova.api.openstack.v2): TRACE: File "/usr/lib/pymodules/python2.6/webob/request.py", line 887, in call_application
(nova.api.openstack.v2): TRACE: app_iter = application(self.environ, start_response)
(nova.api.openstack.v2): TRACE: File "/usr/lib/pymodules/python2.6/webob/dec.py", line 159, in __call__
(nova.api.openstack.v2): TRACE: return resp(environ, start_response)
(nova.api.openstack.v2): TRACE: File "/usr/lib/pymodules/python2.6/routes/middleware.py", line 131, in __call__
(nova.api.openstack.v2): TRACE: response = self.app(environ, start_response)
(nova.api.openstack.v2): TRACE: File "/usr/lib/pymodules/python2.6/webob/dec.py", line 159, in __call__
(nova.api.openstack.v2): TRACE: return resp(environ, start_response)
(nova.api.openstack.v2): TRACE: File "/usr/lib/pymodules/python2.6/webob/dec.py", line 159, in __call__
(nova.api.openstack.v2): TRACE: return resp(environ, start_response)
(nova.api.openstack.v2): TRACE: File "/usr/lib/pymodules/python2.6/routes/middleware.py", line 131, in __call__
(nova.api.openstack.v2): TRACE: response = self.app(environ, start_response)
(nova.api.openstack.v2): TRACE: File "/usr/lib/pymodules/python2.6/webob/dec.py", line 159, in __call__
(nova.api.openstack.v2): TRACE: return resp(environ, start_response)
(nova.api.openstack.v2): TRACE: File "/usr/lib/pymodules/python2.6/webob/dec.py", line 147, in __call__
(nova.api.openstack.v2): TRACE: resp = self.call_func(req, *args, **self.kwargs)
(nova.api.openstack.v2): TRACE: File "/usr/lib/pymodules/python2.6/webob/dec.py", line 208, in call_func
(nova.api.openstack.v2): TRACE: return self.func(req, *args, **kwargs)
(nova.api.openstack.v2): TRACE: File "/usr/lib/pymodules/python2.6/nova/api/openstack/wsgi.py", line 589, in __call__
(nova.api.openstack.v2): TRACE: action=action)
(nova.api.openstack.v2): TRACE: File "/usr/lib/pymodules/python2.6/nova/api/openstack/wsgi.py", line 463, in serialize
(nova.api.openstack.v2): TRACE: action)
(nova.api.openstack.v2): TRACE: File "/usr/lib/pymodules/python2.6/nova/api/openstack/wsgi.py", line 475, in serialize_body
(nova.api.openstack.v2): TRACE: response.body = utils.dumps(data)
(nova.api.openstack.v2): TRACE: File "/usr/lib/pymodules/python2.6/nova/utils.py", line 742, in dumps
(nova.api.openstack.v2): TRACE: return json.dumps(value)
(nova.api.openstack.v2): TRACE: File "/usr/lib/python2.6/json/__init__.py", line 230, in dumps
(nova.api.openstack.v2): TRACE: return _default_encoder.encode(obj)
(nova.api.openstack.v2): TRACE: File "/usr/lib/python2.6/json/encoder.py", line 367, in encode
(nova.api.openstack.v2): TRACE: chunks = list(self.iterencode(o))
(nova.api.openstack.v2): TRACE: File "/usr/lib/python2.6/json/encoder.py", line 309, in _iterencode
(nova.api.openstack.v2): TRACE: for chunk in self._iterencode_dict(o, markers):
(nova.api.openstack.v2): TRACE: File "/usr/lib/python2.6/json/encoder.py", line 275, in _iterencode_dict
(nova.api.openstack.v2): TRACE: for chunk in self._iterencode(value, markers):
(nova.api.openstack.v2): TRACE: File "/usr/lib/python2.6/json/encoder.py", line 306, in _iterencode
(nova.api.openstack.v2): TRACE: for chunk in self._iterencode_list(o, markers):
(nova.api.openstack.v2): TRACE: File "/usr/lib/python2.6/json/encoder.py", line 204, in _iterencode_list
(nova.api.openstack.v2): TRACE: for chunk in self._iterencode(value, markers):
(nova.api.openstack.v2): TRACE: File "/usr/lib/python2.6/json/encoder.py", line 309, in _iterencode
(nova.api.openstack.v2): TRACE: for chunk in self._iterencode_dict(o, markers):
(nova.api.openstack.v2): TRACE: File "/usr/lib/python2.6/json/encoder.py", line 275, in _iterencode_dict
(nova.api.openstack.v2): TRACE: for chunk in self._iterencode(value, markers):
(nova.api.openstack.v2): TRACE: File "/usr/lib/python2.6/json/encoder.py", line 294, in _iterencode
(nova.api.openstack.v2): TRACE: yield encoder(o)
(nova.api.openstack.v2): TRACE: UnicodeDecodeError: 'utf8' codec can't decode byte 0xa8 in position 5: invalid start byte
(nova.api.openstack.v2): TRACE: