最近使用openstack的时候出现一个奇怪的问题:
keystone user-list 报错:
/usr/lib/python2.7/site-packages/keystoneclient/shell.py:65: DeprecationWarning: The keystone CLI is deprecated in favor of python-openstackclient. For a Python library, continue using python-keystoneclient. ‘python-keystoneclient.‘, DeprecationWarning) An unexpected error prevented the server from fulfilling your request
查找keystone的日志为:
2015-12-02 16:05:59.064 4479 INFO keystone.common.wsgi [-] POST /tokens? 2015-12-02 16:05:59.175 4478 INFO keystone.common.wsgi [-] GET /users? 2015-12-02 16:05:59.183 4478 ERROR keystone.common.wsgi [-] Expecting object: line 1 column 132 (char 131) 2015-12-02 16:05:59.183 4478 TRACE keystone.common.wsgi Traceback (most recent call last): 2015-12-02 16:05:59.183 4478 TRACE keystone.common.wsgi File "/usr/lib/python2.7/site-packages/keystone/common/wsgi.py", line 239, in __call__ 2015-12-02 16:05:59.183 4478 TRACE keystone.common.wsgi result = method(context, **params) 2015-12-02 16:05:59.183 4478 TRACE keystone.common.wsgi File "/usr/lib/python2.7/site-packages/keystone/identity/controllers.py", line 50, in get_users 2015-12-02 16:05:59.183 4478 TRACE keystone.common.wsgi CONF.identity.default_domain_id) 2015-12-02 16:05:59.183 4478 TRACE keystone.common.wsgi File "/usr/lib/python2.7/site-packages/keystone/common/manager.py", line 47, in wrapper 2015-12-02 16:05:59.183 4478 TRACE keystone.common.wsgi return f(self, *args, **kwargs) 2015-12-02 16:05:59.183 4478 TRACE keystone.common.wsgi File "/usr/lib/python2.7/site-packages/keystone/identity/core.py", line 342, in wrapper 2015-12-02 16:05:59.183 4478 TRACE keystone.common.wsgi return f(self, *args, **kwargs) 2015-12-02 16:05:59.183 4478 TRACE keystone.common.wsgi File "/usr/lib/python2.7/site-packages/keystone/identity/core.py", line 353, in wrapper 2015-12-02 16:05:59.183 4478 TRACE keystone.common.wsgi return f(self, *args, **kwargs) 2015-12-02 16:05:59.183 4478 TRACE keystone.common.wsgi File "/usr/lib/python2.7/site-packages/keystone/identity/core.py", line 791, in list_users 2015-12-02 16:05:59.183 4478 TRACE keystone.common.wsgi ref_list = driver.list_users(hints) 2015-12-02 16:05:59.183 4478 TRACE keystone.common.wsgi File "/usr/lib/python2.7/site-packages/keystone/common/sql/core.py", line 223, in wrapper 2015-12-02 16:05:59.183 4478 TRACE keystone.common.wsgi return f(self, hints, *args, **kwargs) 2015-12-02 16:05:59.183 4478 TRACE keystone.common.wsgi File "/usr/lib/python2.7/site-packages/keystone/identity/backends/sql.py", line 125, in list_users 2015-12-02 16:05:59.183 4478 TRACE keystone.common.wsgi return [identity.filter_user(x.to_dict()) for x in user_refs] 2015-12-02 16:05:59.183 4478 TRACE keystone.common.wsgi File "/usr/lib64/python2.7/site-packages/sqlalchemy/orm/loading.py", line 73, in instances 2015-12-02 16:05:59.183 4478 TRACE keystone.common.wsgi rows = [process[0](row, None) for row in fetch] 2015-12-02 16:05:59.183 4478 TRACE keystone.common.wsgi File "/usr/lib64/python2.7/site-packages/sqlalchemy/orm/loading.py", line 455, in _instance 2015-12-02 16:05:59.183 4478 TRACE keystone.common.wsgi populate_state(state, dict_, row, isnew, only_load_props) 2015-12-02 16:05:59.183 4478 TRACE keystone.common.wsgi File "/usr/lib64/python2.7/site-packages/sqlalchemy/orm/loading.py", line 305, in populate_state 2015-12-02 16:05:59.183 4478 TRACE keystone.common.wsgi populator(state, dict_, row) 2015-12-02 16:05:59.183 4478 TRACE keystone.common.wsgi File "/usr/lib64/python2.7/site-packages/sqlalchemy/orm/strategies.py", line 169, in fetch_col 2015-12-02 16:05:59.183 4478 TRACE keystone.common.wsgi dict_[key] = row[col] 2015-12-02 16:05:59.183 4478 TRACE keystone.common.wsgi File "/usr/lib64/python2.7/site-packages/sqlalchemy/sql/type_api.py", line 911, in process 2015-12-02 16:05:59.183 4478 TRACE keystone.common.wsgi return process_value(impl_processor(value), dialect) 2015-12-02 16:05:59.183 4478 TRACE keystone.common.wsgi File "/usr/lib/python2.7/site-packages/keystone/common/sql/core.py", line 118, in process_result_value 2015-12-02 16:05:59.183 4478 TRACE keystone.common.wsgi return jsonutils.loads(value) 2015-12-02 16:05:59.183 4478 TRACE keystone.common.wsgi File "/usr/lib/python2.7/site-packages/oslo_serialization/jsonutils.py", line 215, in loads 2015-12-02 16:05:59.183 4478 TRACE keystone.common.wsgi return json.loads(encodeutils.safe_decode(s, encoding), **kwargs) 2015-12-02 16:05:59.183 4478 TRACE keystone.common.wsgi File "/usr/lib64/python2.7/json/__init__.py", line 338, in loads 2015-12-02 16:05:59.183 4478 TRACE keystone.common.wsgi return _default_decoder.decode(s) 2015-12-02 16:05:59.183 4478 TRACE keystone.common.wsgi File "/usr/lib64/python2.7/json/decoder.py", line 365, in decode 2015-12-02 16:05:59.183 4478 TRACE keystone.common.wsgi obj, end = self.raw_decode(s, idx=_w(s, 0).end()) 2015-12-02 16:05:59.183 4478 TRACE keystone.common.wsgi File "/usr/lib64/python2.7/json/decoder.py", line 381, in raw_decode 2015-12-02 16:05:59.183 4478 TRACE keystone.common.wsgi obj, end = self.scan_once(s, idx) 2015-12-02 16:05:59.183 4478 TRACE keystone.common.wsgi ValueError: Expecting object: line 1 column 132 (char 131) 2015-12-02 16:05:59.183 4478 TRACE keystone.common.wsgi 2015-12-02 16:06:02.334 10614 INFO keystone.token.persistence.backends.sql [-] Total expired tokens removed: 0
然后去查看数据库中user列表发现其中一个user的email字典格式出了问题:
{"email": {"phone": "13152196588", "email": "test@live.com"}
少写了一个‘}’
真是粗心害死人呀。
原文:http://www.cnblogs.com/gisyang1985/p/5013365.html