Activity log for bug #1761629

Date Who What changed Old value New value Message
2018-04-05 23:55:47 Seyeong Kim bug added bug
2018-04-05 23:57:25 OpenStack Infra heat: status New In Progress
2018-04-05 23:57:25 OpenStack Infra heat: assignee Seyeong Kim (xtrusia)
2018-04-06 00:25:25 Seyeong Kim tags sts
2018-04-16 04:09:20 Rabi Mishra heat: importance Undecided Medium
2018-04-24 06:27:28 Seyeong Kim summary unicode error when using old unicode non uuid style user id [SRU] unicode error when using old unicode non uuid style user id
2018-04-24 06:40:00 Seyeong Kim description When use old non unicode user id, such as Gāo heat stack-list shows unicode error like below heat --debug stack-list DEBUG (session) REQ: curl -g -i -X GET http://10.0.11.184:5000/v2.0 -H "Accept: application/json" -H "User-Agent: python-keystoneclient" INFO (connectionpool) Starting new HTTP connection (1): 10.0.11.184 DEBUG (connectionpool) "GET /v2.0 HTTP/1.1" 200 337 DEBUG (session) RESP: [200] Content-Length: 337 Vary: X-Auth-Token Keep-Alive: timeout=5, max=100 Server: Apache/2.4.18 (Ubuntu) Connection: Keep-Alive Date: Thu, 05 Apr 2018 21:20:39 GMT x-openstack-request-id: req-df64189d-c865-47fb-b89d-698d61dfafdc Content-Type: [68/1725] on/json X-Distribution: Ubuntu RESP BODY: {"version": {"status": "stable", "updated": "2014-04-17T00:00:00Z", "media-types": [{"base": "application/json", "type": "application/vnd.openstack.identity-v2.0+json"}], "id": "v2.0", "links": [{"href": "http://10.0.11.184:5000/v2.0/", "rel": "self"}, {"href": "ht tp://docs.openstack.org/", "type": "text/html", "rel": "describedby"}]}} DEBUG (v2) Making authentication request to http://10.0.11.184:5000/v2.0/tokens DEBUG (connectionpool) "POST /v2.0/tokens HTTP/1.1" 200 3105 DEBUG (session) REQ: curl -g -i -X GET http://10.0.11.170:8004/v1/c9c6d2b72f74458bada7f94501369b18/stacks? -H "User-Agent: python-heatclient" -H "Accept: application/json" -H "X-Auth-Token: {SHA1}ad359574acee284a60451f9e2340ec46d6e17728" INFO (connectionpool) Starting new HTTP connection (1): 10.0.11.170 DEBUG (connectionpool) "GET /v1/c9c6d2b72f74458bada7f94501369b18/stacks HTTP/1.1" 400 5508 DEBUG (session) RESP: [400] Date: Thu, 05 Apr 2018 21:20:39 GMT Content-Length: 5508 Content-Type: application/json; charset=UTF-8 Connection: keep-alive RESP BODY: {"explanation": "The server could not comply with the request since it is either malformed or otherwise incorrect.", "code": 400, "error": {"message": "'ascii' codec can't encode character u'\\u0101' in position 1: ordinal not in range(128)", "traceback": "Tracebac k (most recent call last):\n File \"/usr/lib/python2.7/dist-packages/heat/api/middleware/fault.py\", line 163, in process_request\n return req.get_response(self.application)\n File \"/usr/lib/python2.7/dist-packages/webob/request.py\", line 1317, in send\n application , catch_exc_info=False)\n File \"/usr/lib/python2.7/dist-packages/webob/request.py\", line 1281, in call_application\n app_iter = application(self.environ, start_response)\n File \"/usr/lib/python2.7/dist-packages/webob/dec.py\", line 130, in __call__\n resp = self.ca ll_func(req, *args, **self.kwargs)\n File \"/usr/lib/python2.7/dist-packages/webob/dec.py\", line 195, in call_func\n return self.func(req, *args, **kwargs)\n File \"/usr/lib/python2.7/dist-packages/oslo_middleware/base.py\", line 114, in __call__\n response = req.get _response(self.application)\n File \"/usr/lib/python2.7/dist-packages/webob/request.py\", line 1317, in send\n application, catch_exc_info=False)\n File \"/usr/lib/python2.7/dist-packages/webob/request.py\", line 1281, in call_application\n app_iter = application(self .environ, start_response)\n File \"/usr/lib/python2.7/dist-packages/webob/dec.py\", line 130, in __call__\n resp = self.call_func(req, *args, **self.kwargs)\n File \"/usr/lib/python2.7/dist-packages/webob/dec.py\", line 195, in call_func\n return self.func(req, *args, **kwargs)\n File \"/usr/lib/python2.7/dist-packages/oslo_middleware/base.py\", line 114, in __call__\n response = req.get_response(self.application)\n File \"/usr/lib/python2.7/dist-packages/webob/request.py\", line 1317, in send\n application, catch_exc_info=False)\ n File \"/usr/lib/python2.7/dist-packages/webob/request.py\", line 1281, in call_application\n app_iter = application(self.environ, start_response)\n File \"/usr/lib/python2.7/dist-packages/webob/dec.py\", line 130, in __call__\n resp = self.call_func(req, *args, **se lf.kwargs)\n File \"/usr/lib/python2.7/dist-packages/webob/dec.py\", line 195, in call_func\n return self.func(req, *args, **kwargs)\n File \"/usr/lib/python2.7/dist-packages/heat/common/wsgi.py\", line 584, in __call__\n response = req.get_response(self.application)\ n File \"/usr/lib/python2.7/dist-packages/webob/request.py\", line 1317, in send\n application, catch_exc_info=False)\n File \"/usr/lib/python2.7/dist-packages/webob/request.py\", line 1281, in call_application\n app_iter = application(self.environ, start_response)\n File \"/usr/lib/python2.7/dist-packages/webob/dec.py\", line 130, in __call__\n resp = self.call_func(req, *args, **self.kwargs)\n File \"/usr/lib/python2.7/dist-packages/webob/dec.py\", line 195, in call_func\n return self.func(req, *args, **kwargs)\n File \"/usr/li b/python2.7/dist-packages/heat/common/wsgi.py\", line 584, in __call__\n response = req.get_response(self.application)\n File \"/usr/lib/python2.7/dist-packages/webob/request.py\", line 1317, in send\n application, catch_exc_info=False)\n File \"/usr/lib/python2.7/dis t-packages/webob/request.py\", line 1281, in call_application\n app_iter = application(self.environ, start_response)\n File \"/usr/lib/python2.7/dist-packages/webob/dec.py\", line 130, in __call__\n resp = self.call_func(req, *args, **self.kwargs)\n File \"/usr/lib/py thon2.7/dist-packages/webob/dec.py\", line 195, in call_func\n return self.func(req, *args, **kwargs)\n File \"/usr/lib/python2.7/dist-packages/keystonemiddleware/auth_token/__init__.py\", line 467, in __call__\n response = req.get_response(self._app)\n File \"/usr/li b/python2.7/dist-packages/webob/request.py\", line 1317, in send\n application, catch_exc_info=False)\n File \"/usr/lib/python2.7/dist-packages/webob/request.py\", line 1281, in call_application\n app_iter = application(self.environ, start_response)\n File \"/usr/lib/ python2.7/dist-packages/webob/dec.py\", line 130, in __call__\n resp = self.call_func(req, *args, **self.kwargs)\n File \"/usr/lib/python2.7/dist-packages/webob/dec.py\", line 195, in call_func\n return self.func(req, *args, **kwargs)\n File \"/usr/lib/python2.7/dist- packages/heat/common/wsgi.py\", line 581, in __call__\n response = self.process_request(req)\n File \"/usr/lib/python2.7/dist-packages/heat/common/context.py\", line 311, in process_request\n project_domain_id=project_domain_id)\n File \"/usr/lib/python2.7/dist-packag es/heat/common/context.py\", line 256, in make_context\n return self.ctxcls(*args, **kwargs)\n File \"/usr/lib/python2.7/dist-packages/heat/common/context.py\", line 109, in __init__\n self.is_admin = self.policy.check_is_admin(self)\n File \"/usr/lib/python2[40/1725] ackages/heat/common/policy.py\", line 88, in check_is_admin\n return self._check(context, 'context_is_admin', target={}, exc=None)\n File \"/usr/lib/python2.7/dist-packages/heat/common/policy.py\", line 65, in _check\n credentials = context.to_dict()\n File \"/usr/lib /python2.7/dist-packages/heat/common/context.py\", line 127, in to_dict\n tenant=self.tenant_id or '-')\nUnicodeEncodeError: 'ascii' codec can't encode character u'\\u0101' in position 1: ordinal not in range(128)\n", "type": "UnicodeEncodeError"}, "title": "Bad Request"} Traceback (most recent call last): File "/usr/bin/heat", line 10, in <module> sys.exit(main()) File "/usr/lib/python2.7/dist-packages/heatclient/shell.py", line 702, in main HeatShell().main(args) File "/usr/lib/python2.7/dist-packages/heatclient/shell.py", line 652, in main args.func(client, args) File "/usr/lib/python2.7/dist-packages/heatclient/v1/shell.py", line 675, in do_stack_list utils.print_list(stacks, fields, sortby_index=sortby_index) File "/usr/lib/python2.7/dist-packages/heatclient/openstack/common/cliutils.py", line 169, in print_list for o in objs: File "/usr/lib/python2.7/dist-packages/heatclient/v1/stacks.py", line 127, in paginate stacks = self._list(url, 'stacks') File "/usr/lib/python2.7/dist-packages/heatclient/openstack/common/apiclient/base.py", line 135, in _list body = self.client.get(url).json() File "/usr/lib/python2.7/dist-packages/keystoneclient/adapter.py", line 176, in get return self.request(url, 'GET', **kwargs) File "/usr/lib/python2.7/dist-packages/heatclient/common/http.py", line 311, in request raise exc.from_response(resp) heatclient.exc.HTTPBadRequest: ERROR: 'ascii' codec can't encode character u'\u0101' in position 1: ordinal not in range(128) [Impact] When use old non unicode user id, such as Gāo heat stack-list shows unicode error Affected to Xenial, Artful ( tested ) UCA Mitaka ( the others ( Ocata, Pike, Queens ) are in testing ) [Test Case] 1. deploy openstack env 2. source novarc ( as admin user ) ( or novarcv3_project as admin ) 3. keystone user-create --name test - openstack user create --domain admin_domain test 4. openstack user set --password-prompt test 4. log into keystone node and install mysql-client 5. connect to mysql with keystone user 6. do below query - set foreign_key_checks = 0; - update local_user set user_id='Gāo' where user_id='UUID'; - update user set id='Gāo' where id='UUID'; - set foreign_key_checks = 1; 7. keystone user-role-add --user test --tenant admin --role Admin - openstack role add --user test --domain admin_domain Admin - openstack role add --user test --project [admin project id] Admin - openstack role add --user test --project [admin project id] Member 8. source novarc ( as test user ) ( or novarcv3_project as test user ) 9. heat stack-list result is like [Others] [Regression] This patch fixes simple unicode. but heat api needs to be restarted. Could be short outage during restarting. [Others] Below is test result heat --debug stack-list DEBUG (session) REQ: curl -g -i -X GET http://10.0.11.184:5000/v2.0 -H "Accept: application/json" -H "User-Agent: python-keystoneclient" INFO (connectionpool) Starting new HTTP connection (1): 10.0.11.184 DEBUG (connectionpool) "GET /v2.0 HTTP/1.1" 200 337 DEBUG (session) RESP: [200] Content-Length: 337 Vary: X-Auth-Token Keep-Alive: timeout=5, max=100 Server: Apache/2.4.18 (Ubuntu) Connection: Keep-Alive Date: Thu, 05 Apr 2018 21:20:39 GMT x-openstack-request-id: req-df64189d-c865-47fb-b89d-698d61dfafdc Content-Type: [68/1725] on/json X-Distribution: Ubuntu RESP BODY: {"version": {"status": "stable", "updated": "2014-04-17T00:00:00Z", "media-types": [{"base": "application/json", "type": "application/vnd.openstack.identity-v2.0+json"}], "id": "v2.0", "links": [{"href": "http://10.0.11.184:5000/v2.0/", "rel": "self"}, {"href": "ht tp://docs.openstack.org/", "type": "text/html", "rel": "describedby"}]}} DEBUG (v2) Making authentication request to http://10.0.11.184:5000/v2.0/tokens DEBUG (connectionpool) "POST /v2.0/tokens HTTP/1.1" 200 3105 DEBUG (session) REQ: curl -g -i -X GET http://10.0.11.170:8004/v1/c9c6d2b72f74458bada7f94501369b18/stacks? -H "User-Agent: python-heatclient" -H "Accept: application/json" -H "X-Auth-Token: {SHA1}ad359574acee284a60451f9e2340ec46d6e17728" INFO (connectionpool) Starting new HTTP connection (1): 10.0.11.170 DEBUG (connectionpool) "GET /v1/c9c6d2b72f74458bada7f94501369b18/stacks HTTP/1.1" 400 5508 DEBUG (session) RESP: [400] Date: Thu, 05 Apr 2018 21:20:39 GMT Content-Length: 5508 Content-Type: application/json; charset=UTF-8 Connection: keep-alive RESP BODY: {"explanation": "The server could not comply with the request since it is either malformed or otherwise incorrect.", "code": 400, "error": {"message": "'ascii' codec can't encode character u'\\u0101' in position 1: ordinal not in range(128)", "traceback": "Tracebac k (most recent call last):\n File \"/usr/lib/python2.7/dist-packages/heat/api/middleware/fault.py\", line 163, in process_request\n return req.get_response(self.application)\n File \"/usr/lib/python2.7/dist-packages/webob/request.py\", line 1317, in send\n application , catch_exc_info=False)\n File \"/usr/lib/python2.7/dist-packages/webob/request.py\", line 1281, in call_application\n app_iter = application(self.environ, start_response)\n File \"/usr/lib/python2.7/dist-packages/webob/dec.py\", line 130, in __call__\n resp = self.ca ll_func(req, *args, **self.kwargs)\n File \"/usr/lib/python2.7/dist-packages/webob/dec.py\", line 195, in call_func\n return self.func(req, *args, **kwargs)\n File \"/usr/lib/python2.7/dist-packages/oslo_middleware/base.py\", line 114, in __call__\n response = req.get _response(self.application)\n File \"/usr/lib/python2.7/dist-packages/webob/request.py\", line 1317, in send\n application, catch_exc_info=False)\n File \"/usr/lib/python2.7/dist-packages/webob/request.py\", line 1281, in call_application\n app_iter = application(self .environ, start_response)\n File \"/usr/lib/python2.7/dist-packages/webob/dec.py\", line 130, in __call__\n resp = self.call_func(req, *args, **self.kwargs)\n File \"/usr/lib/python2.7/dist-packages/webob/dec.py\", line 195, in call_func\n return self.func(req, *args,  **kwargs)\n File \"/usr/lib/python2.7/dist-packages/oslo_middleware/base.py\", line 114, in __call__\n response = req.get_response(self.application)\n File \"/usr/lib/python2.7/dist-packages/webob/request.py\", line 1317, in send\n application, catch_exc_info=False)\ n File \"/usr/lib/python2.7/dist-packages/webob/request.py\", line 1281, in call_application\n app_iter = application(self.environ, start_response)\n File \"/usr/lib/python2.7/dist-packages/webob/dec.py\", line 130, in __call__\n resp = self.call_func(req, *args, **se lf.kwargs)\n File \"/usr/lib/python2.7/dist-packages/webob/dec.py\", line 195, in call_func\n return self.func(req, *args, **kwargs)\n File \"/usr/lib/python2.7/dist-packages/heat/common/wsgi.py\", line 584, in __call__\n response = req.get_response(self.application)\ n File \"/usr/lib/python2.7/dist-packages/webob/request.py\", line 1317, in send\n application, catch_exc_info=False)\n File \"/usr/lib/python2.7/dist-packages/webob/request.py\", line 1281, in call_application\n app_iter = application(self.environ, start_response)\n  File \"/usr/lib/python2.7/dist-packages/webob/dec.py\", line 130, in __call__\n resp = self.call_func(req, *args, **self.kwargs)\n File \"/usr/lib/python2.7/dist-packages/webob/dec.py\", line 195, in call_func\n return self.func(req, *args, **kwargs)\n File \"/usr/li b/python2.7/dist-packages/heat/common/wsgi.py\", line 584, in __call__\n response = req.get_response(self.application)\n File \"/usr/lib/python2.7/dist-packages/webob/request.py\", line 1317, in send\n application, catch_exc_info=False)\n File \"/usr/lib/python2.7/dis t-packages/webob/request.py\", line 1281, in call_application\n app_iter = application(self.environ, start_response)\n File \"/usr/lib/python2.7/dist-packages/webob/dec.py\", line 130, in __call__\n resp = self.call_func(req, *args, **self.kwargs)\n File \"/usr/lib/py thon2.7/dist-packages/webob/dec.py\", line 195, in call_func\n return self.func(req, *args, **kwargs)\n File \"/usr/lib/python2.7/dist-packages/keystonemiddleware/auth_token/__init__.py\", line 467, in __call__\n response = req.get_response(self._app)\n File \"/usr/li b/python2.7/dist-packages/webob/request.py\", line 1317, in send\n application, catch_exc_info=False)\n File \"/usr/lib/python2.7/dist-packages/webob/request.py\", line 1281, in call_application\n app_iter = application(self.environ, start_response)\n File \"/usr/lib/ python2.7/dist-packages/webob/dec.py\", line 130, in __call__\n resp = self.call_func(req, *args, **self.kwargs)\n File \"/usr/lib/python2.7/dist-packages/webob/dec.py\", line 195, in call_func\n return self.func(req, *args, **kwargs)\n File \"/usr/lib/python2.7/dist- packages/heat/common/wsgi.py\", line 581, in __call__\n response = self.process_request(req)\n File \"/usr/lib/python2.7/dist-packages/heat/common/context.py\", line 311, in process_request\n project_domain_id=project_domain_id)\n File \"/usr/lib/python2.7/dist-packag es/heat/common/context.py\", line 256, in make_context\n return self.ctxcls(*args, **kwargs)\n File \"/usr/lib/python2.7/dist-packages/heat/common/context.py\", line 109, in __init__\n self.is_admin = self.policy.check_is_admin(self)\n File \"/usr/lib/python2[40/1725] ackages/heat/common/policy.py\", line 88, in check_is_admin\n return self._check(context, 'context_is_admin', target={}, exc=None)\n File \"/usr/lib/python2.7/dist-packages/heat/common/policy.py\", line 65, in _check\n credentials = context.to_dict()\n File \"/usr/lib /python2.7/dist-packages/heat/common/context.py\", line 127, in to_dict\n tenant=self.tenant_id or '-')\nUnicodeEncodeError: 'ascii' codec can't encode character u'\\u0101' in position 1: ordinal not in range(128)\n", "type": "UnicodeEncodeError"}, "title": "Bad Request"} Traceback (most recent call last):   File "/usr/bin/heat", line 10, in <module>     sys.exit(main())   File "/usr/lib/python2.7/dist-packages/heatclient/shell.py", line 702, in main     HeatShell().main(args)   File "/usr/lib/python2.7/dist-packages/heatclient/shell.py", line 652, in main     args.func(client, args)   File "/usr/lib/python2.7/dist-packages/heatclient/v1/shell.py", line 675, in do_stack_list     utils.print_list(stacks, fields, sortby_index=sortby_index)   File "/usr/lib/python2.7/dist-packages/heatclient/openstack/common/cliutils.py", line 169, in print_list     for o in objs:   File "/usr/lib/python2.7/dist-packages/heatclient/v1/stacks.py", line 127, in paginate     stacks = self._list(url, 'stacks')   File "/usr/lib/python2.7/dist-packages/heatclient/openstack/common/apiclient/base.py", line 135, in _list     body = self.client.get(url).json()   File "/usr/lib/python2.7/dist-packages/keystoneclient/adapter.py", line 176, in get     return self.request(url, 'GET', **kwargs)   File "/usr/lib/python2.7/dist-packages/heatclient/common/http.py", line 311, in request     raise exc.from_response(resp) heatclient.exc.HTTPBadRequest: ERROR: 'ascii' codec can't encode character u'\u0101' in position 1: ordinal not in range(128)
2018-04-24 06:40:11 Seyeong Kim bug task added heat (Ubuntu)
2018-04-24 06:40:25 Seyeong Kim nominated for series Ubuntu Bionic
2018-04-24 06:40:25 Seyeong Kim nominated for series Ubuntu Artful
2018-04-24 06:40:25 Seyeong Kim nominated for series Ubuntu Xenial
2018-04-24 06:40:48 Seyeong Kim bug task added cloud-archive
2018-04-24 06:51:08 Seyeong Kim tags sts sts sts-sru-neede
2018-04-24 06:51:13 Seyeong Kim tags sts sts-sru-neede sts sts-sru-needed
2018-04-24 07:32:19 Seyeong Kim attachment added lp1761629_xenial.debdiff https://bugs.launchpad.net/cloud-archive/+bug/1761629/+attachment/5126386/+files/lp1761629_xenial.debdiff
2018-04-24 07:32:41 Seyeong Kim attachment added lp1761629_artful.debdiff https://bugs.launchpad.net/cloud-archive/+bug/1761629/+attachment/5126387/+files/lp1761629_artful.debdiff
2018-04-24 07:33:12 Seyeong Kim attachment added lp1761629_mitaka.debdiff https://bugs.launchpad.net/cloud-archive/+bug/1761629/+attachment/5126391/+files/lp1761629_mitaka.debdiff
2018-04-24 08:04:40 Seyeong Kim attachment added lp1761629_ocata.debdiff https://bugs.launchpad.net/heat/+bug/1761629/+attachment/5126398/+files/lp1761629_ocata.debdiff
2018-04-24 08:05:01 Seyeong Kim description [Impact] When use old non unicode user id, such as Gāo heat stack-list shows unicode error Affected to Xenial, Artful ( tested ) UCA Mitaka ( the others ( Ocata, Pike, Queens ) are in testing ) [Test Case] 1. deploy openstack env 2. source novarc ( as admin user ) ( or novarcv3_project as admin ) 3. keystone user-create --name test - openstack user create --domain admin_domain test 4. openstack user set --password-prompt test 4. log into keystone node and install mysql-client 5. connect to mysql with keystone user 6. do below query - set foreign_key_checks = 0; - update local_user set user_id='Gāo' where user_id='UUID'; - update user set id='Gāo' where id='UUID'; - set foreign_key_checks = 1; 7. keystone user-role-add --user test --tenant admin --role Admin - openstack role add --user test --domain admin_domain Admin - openstack role add --user test --project [admin project id] Admin - openstack role add --user test --project [admin project id] Member 8. source novarc ( as test user ) ( or novarcv3_project as test user ) 9. heat stack-list result is like [Others] [Regression] This patch fixes simple unicode. but heat api needs to be restarted. Could be short outage during restarting. [Others] Below is test result heat --debug stack-list DEBUG (session) REQ: curl -g -i -X GET http://10.0.11.184:5000/v2.0 -H "Accept: application/json" -H "User-Agent: python-keystoneclient" INFO (connectionpool) Starting new HTTP connection (1): 10.0.11.184 DEBUG (connectionpool) "GET /v2.0 HTTP/1.1" 200 337 DEBUG (session) RESP: [200] Content-Length: 337 Vary: X-Auth-Token Keep-Alive: timeout=5, max=100 Server: Apache/2.4.18 (Ubuntu) Connection: Keep-Alive Date: Thu, 05 Apr 2018 21:20:39 GMT x-openstack-request-id: req-df64189d-c865-47fb-b89d-698d61dfafdc Content-Type: [68/1725] on/json X-Distribution: Ubuntu RESP BODY: {"version": {"status": "stable", "updated": "2014-04-17T00:00:00Z", "media-types": [{"base": "application/json", "type": "application/vnd.openstack.identity-v2.0+json"}], "id": "v2.0", "links": [{"href": "http://10.0.11.184:5000/v2.0/", "rel": "self"}, {"href": "ht tp://docs.openstack.org/", "type": "text/html", "rel": "describedby"}]}} DEBUG (v2) Making authentication request to http://10.0.11.184:5000/v2.0/tokens DEBUG (connectionpool) "POST /v2.0/tokens HTTP/1.1" 200 3105 DEBUG (session) REQ: curl -g -i -X GET http://10.0.11.170:8004/v1/c9c6d2b72f74458bada7f94501369b18/stacks? -H "User-Agent: python-heatclient" -H "Accept: application/json" -H "X-Auth-Token: {SHA1}ad359574acee284a60451f9e2340ec46d6e17728" INFO (connectionpool) Starting new HTTP connection (1): 10.0.11.170 DEBUG (connectionpool) "GET /v1/c9c6d2b72f74458bada7f94501369b18/stacks HTTP/1.1" 400 5508 DEBUG (session) RESP: [400] Date: Thu, 05 Apr 2018 21:20:39 GMT Content-Length: 5508 Content-Type: application/json; charset=UTF-8 Connection: keep-alive RESP BODY: {"explanation": "The server could not comply with the request since it is either malformed or otherwise incorrect.", "code": 400, "error": {"message": "'ascii' codec can't encode character u'\\u0101' in position 1: ordinal not in range(128)", "traceback": "Tracebac k (most recent call last):\n File \"/usr/lib/python2.7/dist-packages/heat/api/middleware/fault.py\", line 163, in process_request\n return req.get_response(self.application)\n File \"/usr/lib/python2.7/dist-packages/webob/request.py\", line 1317, in send\n application , catch_exc_info=False)\n File \"/usr/lib/python2.7/dist-packages/webob/request.py\", line 1281, in call_application\n app_iter = application(self.environ, start_response)\n File \"/usr/lib/python2.7/dist-packages/webob/dec.py\", line 130, in __call__\n resp = self.ca ll_func(req, *args, **self.kwargs)\n File \"/usr/lib/python2.7/dist-packages/webob/dec.py\", line 195, in call_func\n return self.func(req, *args, **kwargs)\n File \"/usr/lib/python2.7/dist-packages/oslo_middleware/base.py\", line 114, in __call__\n response = req.get _response(self.application)\n File \"/usr/lib/python2.7/dist-packages/webob/request.py\", line 1317, in send\n application, catch_exc_info=False)\n File \"/usr/lib/python2.7/dist-packages/webob/request.py\", line 1281, in call_application\n app_iter = application(self .environ, start_response)\n File \"/usr/lib/python2.7/dist-packages/webob/dec.py\", line 130, in __call__\n resp = self.call_func(req, *args, **self.kwargs)\n File \"/usr/lib/python2.7/dist-packages/webob/dec.py\", line 195, in call_func\n return self.func(req, *args,  **kwargs)\n File \"/usr/lib/python2.7/dist-packages/oslo_middleware/base.py\", line 114, in __call__\n response = req.get_response(self.application)\n File \"/usr/lib/python2.7/dist-packages/webob/request.py\", line 1317, in send\n application, catch_exc_info=False)\ n File \"/usr/lib/python2.7/dist-packages/webob/request.py\", line 1281, in call_application\n app_iter = application(self.environ, start_response)\n File \"/usr/lib/python2.7/dist-packages/webob/dec.py\", line 130, in __call__\n resp = self.call_func(req, *args, **se lf.kwargs)\n File \"/usr/lib/python2.7/dist-packages/webob/dec.py\", line 195, in call_func\n return self.func(req, *args, **kwargs)\n File \"/usr/lib/python2.7/dist-packages/heat/common/wsgi.py\", line 584, in __call__\n response = req.get_response(self.application)\ n File \"/usr/lib/python2.7/dist-packages/webob/request.py\", line 1317, in send\n application, catch_exc_info=False)\n File \"/usr/lib/python2.7/dist-packages/webob/request.py\", line 1281, in call_application\n app_iter = application(self.environ, start_response)\n  File \"/usr/lib/python2.7/dist-packages/webob/dec.py\", line 130, in __call__\n resp = self.call_func(req, *args, **self.kwargs)\n File \"/usr/lib/python2.7/dist-packages/webob/dec.py\", line 195, in call_func\n return self.func(req, *args, **kwargs)\n File \"/usr/li b/python2.7/dist-packages/heat/common/wsgi.py\", line 584, in __call__\n response = req.get_response(self.application)\n File \"/usr/lib/python2.7/dist-packages/webob/request.py\", line 1317, in send\n application, catch_exc_info=False)\n File \"/usr/lib/python2.7/dis t-packages/webob/request.py\", line 1281, in call_application\n app_iter = application(self.environ, start_response)\n File \"/usr/lib/python2.7/dist-packages/webob/dec.py\", line 130, in __call__\n resp = self.call_func(req, *args, **self.kwargs)\n File \"/usr/lib/py thon2.7/dist-packages/webob/dec.py\", line 195, in call_func\n return self.func(req, *args, **kwargs)\n File \"/usr/lib/python2.7/dist-packages/keystonemiddleware/auth_token/__init__.py\", line 467, in __call__\n response = req.get_response(self._app)\n File \"/usr/li b/python2.7/dist-packages/webob/request.py\", line 1317, in send\n application, catch_exc_info=False)\n File \"/usr/lib/python2.7/dist-packages/webob/request.py\", line 1281, in call_application\n app_iter = application(self.environ, start_response)\n File \"/usr/lib/ python2.7/dist-packages/webob/dec.py\", line 130, in __call__\n resp = self.call_func(req, *args, **self.kwargs)\n File \"/usr/lib/python2.7/dist-packages/webob/dec.py\", line 195, in call_func\n return self.func(req, *args, **kwargs)\n File \"/usr/lib/python2.7/dist- packages/heat/common/wsgi.py\", line 581, in __call__\n response = self.process_request(req)\n File \"/usr/lib/python2.7/dist-packages/heat/common/context.py\", line 311, in process_request\n project_domain_id=project_domain_id)\n File \"/usr/lib/python2.7/dist-packag es/heat/common/context.py\", line 256, in make_context\n return self.ctxcls(*args, **kwargs)\n File \"/usr/lib/python2.7/dist-packages/heat/common/context.py\", line 109, in __init__\n self.is_admin = self.policy.check_is_admin(self)\n File \"/usr/lib/python2[40/1725] ackages/heat/common/policy.py\", line 88, in check_is_admin\n return self._check(context, 'context_is_admin', target={}, exc=None)\n File \"/usr/lib/python2.7/dist-packages/heat/common/policy.py\", line 65, in _check\n credentials = context.to_dict()\n File \"/usr/lib /python2.7/dist-packages/heat/common/context.py\", line 127, in to_dict\n tenant=self.tenant_id or '-')\nUnicodeEncodeError: 'ascii' codec can't encode character u'\\u0101' in position 1: ordinal not in range(128)\n", "type": "UnicodeEncodeError"}, "title": "Bad Request"} Traceback (most recent call last):   File "/usr/bin/heat", line 10, in <module>     sys.exit(main())   File "/usr/lib/python2.7/dist-packages/heatclient/shell.py", line 702, in main     HeatShell().main(args)   File "/usr/lib/python2.7/dist-packages/heatclient/shell.py", line 652, in main     args.func(client, args)   File "/usr/lib/python2.7/dist-packages/heatclient/v1/shell.py", line 675, in do_stack_list     utils.print_list(stacks, fields, sortby_index=sortby_index)   File "/usr/lib/python2.7/dist-packages/heatclient/openstack/common/cliutils.py", line 169, in print_list     for o in objs:   File "/usr/lib/python2.7/dist-packages/heatclient/v1/stacks.py", line 127, in paginate     stacks = self._list(url, 'stacks')   File "/usr/lib/python2.7/dist-packages/heatclient/openstack/common/apiclient/base.py", line 135, in _list     body = self.client.get(url).json()   File "/usr/lib/python2.7/dist-packages/keystoneclient/adapter.py", line 176, in get     return self.request(url, 'GET', **kwargs)   File "/usr/lib/python2.7/dist-packages/heatclient/common/http.py", line 311, in request     raise exc.from_response(resp) heatclient.exc.HTTPBadRequest: ERROR: 'ascii' codec can't encode character u'\u0101' in position 1: ordinal not in range(128) [Impact] When use old non unicode user id, such as Gāo heat stack-list shows unicode error Affected to Xenial, Artful ( tested ) UCA Mitaka, Ocata ( the others ( Pike, Queens ) are in testing ) [Test Case] 1. deploy openstack env 2. source novarc ( as admin user ) ( or novarcv3_project as admin ) 3. keystone user-create --name test - openstack user create --domain admin_domain test 4. openstack user set --password-prompt test 4. log into keystone node and install mysql-client 5. connect to mysql with keystone user 6. do below query - set foreign_key_checks = 0; - update local_user set user_id='Gāo' where user_id='UUID'; - update user set id='Gāo' where id='UUID'; - set foreign_key_checks = 1; 7. keystone user-role-add --user test --tenant admin --role Admin - openstack role add --user test --domain admin_domain Admin - openstack role add --user test --project [admin project id] Admin - openstack role add --user test --project [admin project id] Member 8. source novarc ( as test user ) ( or novarcv3_project as test user ) 9. heat stack-list result is like [Others] [Regression] This patch fixes simple unicode. but heat api needs to be restarted. Could be short outage during restarting. [Others] Below is test result heat --debug stack-list DEBUG (session) REQ: curl -g -i -X GET http://10.0.11.184:5000/v2.0 -H "Accept: application/json" -H "User-Agent: python-keystoneclient" INFO (connectionpool) Starting new HTTP connection (1): 10.0.11.184 DEBUG (connectionpool) "GET /v2.0 HTTP/1.1" 200 337 DEBUG (session) RESP: [200] Content-Length: 337 Vary: X-Auth-Token Keep-Alive: timeout=5, max=100 Server: Apache/2.4.18 (Ubuntu) Connection: Keep-Alive Date: Thu, 05 Apr 2018 21:20:39 GMT x-openstack-request-id: req-df64189d-c865-47fb-b89d-698d61dfafdc Content-Type: [68/1725] on/json X-Distribution: Ubuntu RESP BODY: {"version": {"status": "stable", "updated": "2014-04-17T00:00:00Z", "media-types": [{"base": "application/json", "type": "application/vnd.openstack.identity-v2.0+json"}], "id": "v2.0", "links": [{"href": "http://10.0.11.184:5000/v2.0/", "rel": "self"}, {"href": "ht tp://docs.openstack.org/", "type": "text/html", "rel": "describedby"}]}} DEBUG (v2) Making authentication request to http://10.0.11.184:5000/v2.0/tokens DEBUG (connectionpool) "POST /v2.0/tokens HTTP/1.1" 200 3105 DEBUG (session) REQ: curl -g -i -X GET http://10.0.11.170:8004/v1/c9c6d2b72f74458bada7f94501369b18/stacks? -H "User-Agent: python-heatclient" -H "Accept: application/json" -H "X-Auth-Token: {SHA1}ad359574acee284a60451f9e2340ec46d6e17728" INFO (connectionpool) Starting new HTTP connection (1): 10.0.11.170 DEBUG (connectionpool) "GET /v1/c9c6d2b72f74458bada7f94501369b18/stacks HTTP/1.1" 400 5508 DEBUG (session) RESP: [400] Date: Thu, 05 Apr 2018 21:20:39 GMT Content-Length: 5508 Content-Type: application/json; charset=UTF-8 Connection: keep-alive RESP BODY: {"explanation": "The server could not comply with the request since it is either malformed or otherwise incorrect.", "code": 400, "error": {"message": "'ascii' codec can't encode character u'\\u0101' in position 1: ordinal not in range(128)", "traceback": "Tracebac k (most recent call last):\n File \"/usr/lib/python2.7/dist-packages/heat/api/middleware/fault.py\", line 163, in process_request\n return req.get_response(self.application)\n File \"/usr/lib/python2.7/dist-packages/webob/request.py\", line 1317, in send\n application , catch_exc_info=False)\n File \"/usr/lib/python2.7/dist-packages/webob/request.py\", line 1281, in call_application\n app_iter = application(self.environ, start_response)\n File \"/usr/lib/python2.7/dist-packages/webob/dec.py\", line 130, in __call__\n resp = self.ca ll_func(req, *args, **self.kwargs)\n File \"/usr/lib/python2.7/dist-packages/webob/dec.py\", line 195, in call_func\n return self.func(req, *args, **kwargs)\n File \"/usr/lib/python2.7/dist-packages/oslo_middleware/base.py\", line 114, in __call__\n response = req.get _response(self.application)\n File \"/usr/lib/python2.7/dist-packages/webob/request.py\", line 1317, in send\n application, catch_exc_info=False)\n File \"/usr/lib/python2.7/dist-packages/webob/request.py\", line 1281, in call_application\n app_iter = application(self .environ, start_response)\n File \"/usr/lib/python2.7/dist-packages/webob/dec.py\", line 130, in __call__\n resp = self.call_func(req, *args, **self.kwargs)\n File \"/usr/lib/python2.7/dist-packages/webob/dec.py\", line 195, in call_func\n return self.func(req, *args,  **kwargs)\n File \"/usr/lib/python2.7/dist-packages/oslo_middleware/base.py\", line 114, in __call__\n response = req.get_response(self.application)\n File \"/usr/lib/python2.7/dist-packages/webob/request.py\", line 1317, in send\n application, catch_exc_info=False)\ n File \"/usr/lib/python2.7/dist-packages/webob/request.py\", line 1281, in call_application\n app_iter = application(self.environ, start_response)\n File \"/usr/lib/python2.7/dist-packages/webob/dec.py\", line 130, in __call__\n resp = self.call_func(req, *args, **se lf.kwargs)\n File \"/usr/lib/python2.7/dist-packages/webob/dec.py\", line 195, in call_func\n return self.func(req, *args, **kwargs)\n File \"/usr/lib/python2.7/dist-packages/heat/common/wsgi.py\", line 584, in __call__\n response = req.get_response(self.application)\ n File \"/usr/lib/python2.7/dist-packages/webob/request.py\", line 1317, in send\n application, catch_exc_info=False)\n File \"/usr/lib/python2.7/dist-packages/webob/request.py\", line 1281, in call_application\n app_iter = application(self.environ, start_response)\n  File \"/usr/lib/python2.7/dist-packages/webob/dec.py\", line 130, in __call__\n resp = self.call_func(req, *args, **self.kwargs)\n File \"/usr/lib/python2.7/dist-packages/webob/dec.py\", line 195, in call_func\n return self.func(req, *args, **kwargs)\n File \"/usr/li b/python2.7/dist-packages/heat/common/wsgi.py\", line 584, in __call__\n response = req.get_response(self.application)\n File \"/usr/lib/python2.7/dist-packages/webob/request.py\", line 1317, in send\n application, catch_exc_info=False)\n File \"/usr/lib/python2.7/dis t-packages/webob/request.py\", line 1281, in call_application\n app_iter = application(self.environ, start_response)\n File \"/usr/lib/python2.7/dist-packages/webob/dec.py\", line 130, in __call__\n resp = self.call_func(req, *args, **self.kwargs)\n File \"/usr/lib/py thon2.7/dist-packages/webob/dec.py\", line 195, in call_func\n return self.func(req, *args, **kwargs)\n File \"/usr/lib/python2.7/dist-packages/keystonemiddleware/auth_token/__init__.py\", line 467, in __call__\n response = req.get_response(self._app)\n File \"/usr/li b/python2.7/dist-packages/webob/request.py\", line 1317, in send\n application, catch_exc_info=False)\n File \"/usr/lib/python2.7/dist-packages/webob/request.py\", line 1281, in call_application\n app_iter = application(self.environ, start_response)\n File \"/usr/lib/ python2.7/dist-packages/webob/dec.py\", line 130, in __call__\n resp = self.call_func(req, *args, **self.kwargs)\n File \"/usr/lib/python2.7/dist-packages/webob/dec.py\", line 195, in call_func\n return self.func(req, *args, **kwargs)\n File \"/usr/lib/python2.7/dist- packages/heat/common/wsgi.py\", line 581, in __call__\n response = self.process_request(req)\n File \"/usr/lib/python2.7/dist-packages/heat/common/context.py\", line 311, in process_request\n project_domain_id=project_domain_id)\n File \"/usr/lib/python2.7/dist-packag es/heat/common/context.py\", line 256, in make_context\n return self.ctxcls(*args, **kwargs)\n File \"/usr/lib/python2.7/dist-packages/heat/common/context.py\", line 109, in __init__\n self.is_admin = self.policy.check_is_admin(self)\n File \"/usr/lib/python2[40/1725] ackages/heat/common/policy.py\", line 88, in check_is_admin\n return self._check(context, 'context_is_admin', target={}, exc=None)\n File \"/usr/lib/python2.7/dist-packages/heat/common/policy.py\", line 65, in _check\n credentials = context.to_dict()\n File \"/usr/lib /python2.7/dist-packages/heat/common/context.py\", line 127, in to_dict\n tenant=self.tenant_id or '-')\nUnicodeEncodeError: 'ascii' codec can't encode character u'\\u0101' in position 1: ordinal not in range(128)\n", "type": "UnicodeEncodeError"}, "title": "Bad Request"} Traceback (most recent call last):   File "/usr/bin/heat", line 10, in <module>     sys.exit(main())   File "/usr/lib/python2.7/dist-packages/heatclient/shell.py", line 702, in main     HeatShell().main(args)   File "/usr/lib/python2.7/dist-packages/heatclient/shell.py", line 652, in main     args.func(client, args)   File "/usr/lib/python2.7/dist-packages/heatclient/v1/shell.py", line 675, in do_stack_list     utils.print_list(stacks, fields, sortby_index=sortby_index)   File "/usr/lib/python2.7/dist-packages/heatclient/openstack/common/cliutils.py", line 169, in print_list     for o in objs:   File "/usr/lib/python2.7/dist-packages/heatclient/v1/stacks.py", line 127, in paginate     stacks = self._list(url, 'stacks')   File "/usr/lib/python2.7/dist-packages/heatclient/openstack/common/apiclient/base.py", line 135, in _list     body = self.client.get(url).json()   File "/usr/lib/python2.7/dist-packages/keystoneclient/adapter.py", line 176, in get     return self.request(url, 'GET', **kwargs)   File "/usr/lib/python2.7/dist-packages/heatclient/common/http.py", line 311, in request     raise exc.from_response(resp) heatclient.exc.HTTPBadRequest: ERROR: 'ascii' codec can't encode character u'\u0101' in position 1: ordinal not in range(128)
2018-04-24 08:29:41 Ubuntu Foundations Team Bug Bot tags sts sts-sru-needed patch sts sts-sru-needed
2018-04-24 08:29:53 Ubuntu Foundations Team Bug Bot bug added subscriber Ubuntu Sponsors Team
2018-04-24 10:41:43 Seyeong Kim attachment added lp1761629_pike.debdiff https://bugs.launchpad.net/cloud-archive/+bug/1761629/+attachment/5126448/+files/lp1761629_pike.debdiff
2018-04-24 10:46:20 Seyeong Kim description [Impact] When use old non unicode user id, such as Gāo heat stack-list shows unicode error Affected to Xenial, Artful ( tested ) UCA Mitaka, Ocata ( the others ( Pike, Queens ) are in testing ) [Test Case] 1. deploy openstack env 2. source novarc ( as admin user ) ( or novarcv3_project as admin ) 3. keystone user-create --name test - openstack user create --domain admin_domain test 4. openstack user set --password-prompt test 4. log into keystone node and install mysql-client 5. connect to mysql with keystone user 6. do below query - set foreign_key_checks = 0; - update local_user set user_id='Gāo' where user_id='UUID'; - update user set id='Gāo' where id='UUID'; - set foreign_key_checks = 1; 7. keystone user-role-add --user test --tenant admin --role Admin - openstack role add --user test --domain admin_domain Admin - openstack role add --user test --project [admin project id] Admin - openstack role add --user test --project [admin project id] Member 8. source novarc ( as test user ) ( or novarcv3_project as test user ) 9. heat stack-list result is like [Others] [Regression] This patch fixes simple unicode. but heat api needs to be restarted. Could be short outage during restarting. [Others] Below is test result heat --debug stack-list DEBUG (session) REQ: curl -g -i -X GET http://10.0.11.184:5000/v2.0 -H "Accept: application/json" -H "User-Agent: python-keystoneclient" INFO (connectionpool) Starting new HTTP connection (1): 10.0.11.184 DEBUG (connectionpool) "GET /v2.0 HTTP/1.1" 200 337 DEBUG (session) RESP: [200] Content-Length: 337 Vary: X-Auth-Token Keep-Alive: timeout=5, max=100 Server: Apache/2.4.18 (Ubuntu) Connection: Keep-Alive Date: Thu, 05 Apr 2018 21:20:39 GMT x-openstack-request-id: req-df64189d-c865-47fb-b89d-698d61dfafdc Content-Type: [68/1725] on/json X-Distribution: Ubuntu RESP BODY: {"version": {"status": "stable", "updated": "2014-04-17T00:00:00Z", "media-types": [{"base": "application/json", "type": "application/vnd.openstack.identity-v2.0+json"}], "id": "v2.0", "links": [{"href": "http://10.0.11.184:5000/v2.0/", "rel": "self"}, {"href": "ht tp://docs.openstack.org/", "type": "text/html", "rel": "describedby"}]}} DEBUG (v2) Making authentication request to http://10.0.11.184:5000/v2.0/tokens DEBUG (connectionpool) "POST /v2.0/tokens HTTP/1.1" 200 3105 DEBUG (session) REQ: curl -g -i -X GET http://10.0.11.170:8004/v1/c9c6d2b72f74458bada7f94501369b18/stacks? -H "User-Agent: python-heatclient" -H "Accept: application/json" -H "X-Auth-Token: {SHA1}ad359574acee284a60451f9e2340ec46d6e17728" INFO (connectionpool) Starting new HTTP connection (1): 10.0.11.170 DEBUG (connectionpool) "GET /v1/c9c6d2b72f74458bada7f94501369b18/stacks HTTP/1.1" 400 5508 DEBUG (session) RESP: [400] Date: Thu, 05 Apr 2018 21:20:39 GMT Content-Length: 5508 Content-Type: application/json; charset=UTF-8 Connection: keep-alive RESP BODY: {"explanation": "The server could not comply with the request since it is either malformed or otherwise incorrect.", "code": 400, "error": {"message": "'ascii' codec can't encode character u'\\u0101' in position 1: ordinal not in range(128)", "traceback": "Tracebac k (most recent call last):\n File \"/usr/lib/python2.7/dist-packages/heat/api/middleware/fault.py\", line 163, in process_request\n return req.get_response(self.application)\n File \"/usr/lib/python2.7/dist-packages/webob/request.py\", line 1317, in send\n application , catch_exc_info=False)\n File \"/usr/lib/python2.7/dist-packages/webob/request.py\", line 1281, in call_application\n app_iter = application(self.environ, start_response)\n File \"/usr/lib/python2.7/dist-packages/webob/dec.py\", line 130, in __call__\n resp = self.ca ll_func(req, *args, **self.kwargs)\n File \"/usr/lib/python2.7/dist-packages/webob/dec.py\", line 195, in call_func\n return self.func(req, *args, **kwargs)\n File \"/usr/lib/python2.7/dist-packages/oslo_middleware/base.py\", line 114, in __call__\n response = req.get _response(self.application)\n File \"/usr/lib/python2.7/dist-packages/webob/request.py\", line 1317, in send\n application, catch_exc_info=False)\n File \"/usr/lib/python2.7/dist-packages/webob/request.py\", line 1281, in call_application\n app_iter = application(self .environ, start_response)\n File \"/usr/lib/python2.7/dist-packages/webob/dec.py\", line 130, in __call__\n resp = self.call_func(req, *args, **self.kwargs)\n File \"/usr/lib/python2.7/dist-packages/webob/dec.py\", line 195, in call_func\n return self.func(req, *args,  **kwargs)\n File \"/usr/lib/python2.7/dist-packages/oslo_middleware/base.py\", line 114, in __call__\n response = req.get_response(self.application)\n File \"/usr/lib/python2.7/dist-packages/webob/request.py\", line 1317, in send\n application, catch_exc_info=False)\ n File \"/usr/lib/python2.7/dist-packages/webob/request.py\", line 1281, in call_application\n app_iter = application(self.environ, start_response)\n File \"/usr/lib/python2.7/dist-packages/webob/dec.py\", line 130, in __call__\n resp = self.call_func(req, *args, **se lf.kwargs)\n File \"/usr/lib/python2.7/dist-packages/webob/dec.py\", line 195, in call_func\n return self.func(req, *args, **kwargs)\n File \"/usr/lib/python2.7/dist-packages/heat/common/wsgi.py\", line 584, in __call__\n response = req.get_response(self.application)\ n File \"/usr/lib/python2.7/dist-packages/webob/request.py\", line 1317, in send\n application, catch_exc_info=False)\n File \"/usr/lib/python2.7/dist-packages/webob/request.py\", line 1281, in call_application\n app_iter = application(self.environ, start_response)\n  File \"/usr/lib/python2.7/dist-packages/webob/dec.py\", line 130, in __call__\n resp = self.call_func(req, *args, **self.kwargs)\n File \"/usr/lib/python2.7/dist-packages/webob/dec.py\", line 195, in call_func\n return self.func(req, *args, **kwargs)\n File \"/usr/li b/python2.7/dist-packages/heat/common/wsgi.py\", line 584, in __call__\n response = req.get_response(self.application)\n File \"/usr/lib/python2.7/dist-packages/webob/request.py\", line 1317, in send\n application, catch_exc_info=False)\n File \"/usr/lib/python2.7/dis t-packages/webob/request.py\", line 1281, in call_application\n app_iter = application(self.environ, start_response)\n File \"/usr/lib/python2.7/dist-packages/webob/dec.py\", line 130, in __call__\n resp = self.call_func(req, *args, **self.kwargs)\n File \"/usr/lib/py thon2.7/dist-packages/webob/dec.py\", line 195, in call_func\n return self.func(req, *args, **kwargs)\n File \"/usr/lib/python2.7/dist-packages/keystonemiddleware/auth_token/__init__.py\", line 467, in __call__\n response = req.get_response(self._app)\n File \"/usr/li b/python2.7/dist-packages/webob/request.py\", line 1317, in send\n application, catch_exc_info=False)\n File \"/usr/lib/python2.7/dist-packages/webob/request.py\", line 1281, in call_application\n app_iter = application(self.environ, start_response)\n File \"/usr/lib/ python2.7/dist-packages/webob/dec.py\", line 130, in __call__\n resp = self.call_func(req, *args, **self.kwargs)\n File \"/usr/lib/python2.7/dist-packages/webob/dec.py\", line 195, in call_func\n return self.func(req, *args, **kwargs)\n File \"/usr/lib/python2.7/dist- packages/heat/common/wsgi.py\", line 581, in __call__\n response = self.process_request(req)\n File \"/usr/lib/python2.7/dist-packages/heat/common/context.py\", line 311, in process_request\n project_domain_id=project_domain_id)\n File \"/usr/lib/python2.7/dist-packag es/heat/common/context.py\", line 256, in make_context\n return self.ctxcls(*args, **kwargs)\n File \"/usr/lib/python2.7/dist-packages/heat/common/context.py\", line 109, in __init__\n self.is_admin = self.policy.check_is_admin(self)\n File \"/usr/lib/python2[40/1725] ackages/heat/common/policy.py\", line 88, in check_is_admin\n return self._check(context, 'context_is_admin', target={}, exc=None)\n File \"/usr/lib/python2.7/dist-packages/heat/common/policy.py\", line 65, in _check\n credentials = context.to_dict()\n File \"/usr/lib /python2.7/dist-packages/heat/common/context.py\", line 127, in to_dict\n tenant=self.tenant_id or '-')\nUnicodeEncodeError: 'ascii' codec can't encode character u'\\u0101' in position 1: ordinal not in range(128)\n", "type": "UnicodeEncodeError"}, "title": "Bad Request"} Traceback (most recent call last):   File "/usr/bin/heat", line 10, in <module>     sys.exit(main())   File "/usr/lib/python2.7/dist-packages/heatclient/shell.py", line 702, in main     HeatShell().main(args)   File "/usr/lib/python2.7/dist-packages/heatclient/shell.py", line 652, in main     args.func(client, args)   File "/usr/lib/python2.7/dist-packages/heatclient/v1/shell.py", line 675, in do_stack_list     utils.print_list(stacks, fields, sortby_index=sortby_index)   File "/usr/lib/python2.7/dist-packages/heatclient/openstack/common/cliutils.py", line 169, in print_list     for o in objs:   File "/usr/lib/python2.7/dist-packages/heatclient/v1/stacks.py", line 127, in paginate     stacks = self._list(url, 'stacks')   File "/usr/lib/python2.7/dist-packages/heatclient/openstack/common/apiclient/base.py", line 135, in _list     body = self.client.get(url).json()   File "/usr/lib/python2.7/dist-packages/keystoneclient/adapter.py", line 176, in get     return self.request(url, 'GET', **kwargs)   File "/usr/lib/python2.7/dist-packages/heatclient/common/http.py", line 311, in request     raise exc.from_response(resp) heatclient.exc.HTTPBadRequest: ERROR: 'ascii' codec can't encode character u'\u0101' in position 1: ordinal not in range(128) [Impact] When use old non unicode user id, such as Gāo heat stack-list shows unicode error Affected to Xenial, Artful ( tested ) UCA Mitaka, Ocata, Pike ( testing Queens ) [Test Case] 1. deploy openstack env 2. source novarc ( as admin user ) ( or novarcv3_project as admin ) 3. keystone user-create --name test - openstack user create --domain admin_domain test 4. openstack user set --password-prompt test 4. log into keystone node and install mysql-client 5. connect to mysql with keystone user 6. do below query - set foreign_key_checks = 0; - update local_user set user_id='Gāo' where user_id='UUID'; - update user set id='Gāo' where id='UUID'; - set foreign_key_checks = 1; 7. keystone user-role-add --user test --tenant admin --role Admin - openstack role add --user test --domain admin_domain Admin - openstack role add --user test --project [admin project id] Admin - openstack role add --user test --project [admin project id] Member 8. source novarc ( as test user ) ( or novarcv3_project as test user ) 9. heat stack-list result is like [Others] [Regression] This patch fixes simple unicode. but heat api needs to be restarted. Could be short outage during restarting. [Others] Below is test result heat --debug stack-list DEBUG (session) REQ: curl -g -i -X GET http://10.0.11.184:5000/v2.0 -H "Accept: application/json" -H "User-Agent: python-keystoneclient" INFO (connectionpool) Starting new HTTP connection (1): 10.0.11.184 DEBUG (connectionpool) "GET /v2.0 HTTP/1.1" 200 337 DEBUG (session) RESP: [200] Content-Length: 337 Vary: X-Auth-Token Keep-Alive: timeout=5, max=100 Server: Apache/2.4.18 (Ubuntu) Connection: Keep-Alive Date: Thu, 05 Apr 2018 21:20:39 GMT x-openstack-request-id: req-df64189d-c865-47fb-b89d-698d61dfafdc Content-Type: [68/1725] on/json X-Distribution: Ubuntu RESP BODY: {"version": {"status": "stable", "updated": "2014-04-17T00:00:00Z", "media-types": [{"base": "application/json", "type": "application/vnd.openstack.identity-v2.0+json"}], "id": "v2.0", "links": [{"href": "http://10.0.11.184:5000/v2.0/", "rel": "self"}, {"href": "ht tp://docs.openstack.org/", "type": "text/html", "rel": "describedby"}]}} DEBUG (v2) Making authentication request to http://10.0.11.184:5000/v2.0/tokens DEBUG (connectionpool) "POST /v2.0/tokens HTTP/1.1" 200 3105 DEBUG (session) REQ: curl -g -i -X GET http://10.0.11.170:8004/v1/c9c6d2b72f74458bada7f94501369b18/stacks? -H "User-Agent: python-heatclient" -H "Accept: application/json" -H "X-Auth-Token: {SHA1}ad359574acee284a60451f9e2340ec46d6e17728" INFO (connectionpool) Starting new HTTP connection (1): 10.0.11.170 DEBUG (connectionpool) "GET /v1/c9c6d2b72f74458bada7f94501369b18/stacks HTTP/1.1" 400 5508 DEBUG (session) RESP: [400] Date: Thu, 05 Apr 2018 21:20:39 GMT Content-Length: 5508 Content-Type: application/json; charset=UTF-8 Connection: keep-alive RESP BODY: {"explanation": "The server could not comply with the request since it is either malformed or otherwise incorrect.", "code": 400, "error": {"message": "'ascii' codec can't encode character u'\\u0101' in position 1: ordinal not in range(128)", "traceback": "Tracebac k (most recent call last):\n File \"/usr/lib/python2.7/dist-packages/heat/api/middleware/fault.py\", line 163, in process_request\n return req.get_response(self.application)\n File \"/usr/lib/python2.7/dist-packages/webob/request.py\", line 1317, in send\n application , catch_exc_info=False)\n File \"/usr/lib/python2.7/dist-packages/webob/request.py\", line 1281, in call_application\n app_iter = application(self.environ, start_response)\n File \"/usr/lib/python2.7/dist-packages/webob/dec.py\", line 130, in __call__\n resp = self.ca ll_func(req, *args, **self.kwargs)\n File \"/usr/lib/python2.7/dist-packages/webob/dec.py\", line 195, in call_func\n return self.func(req, *args, **kwargs)\n File \"/usr/lib/python2.7/dist-packages/oslo_middleware/base.py\", line 114, in __call__\n response = req.get _response(self.application)\n File \"/usr/lib/python2.7/dist-packages/webob/request.py\", line 1317, in send\n application, catch_exc_info=False)\n File \"/usr/lib/python2.7/dist-packages/webob/request.py\", line 1281, in call_application\n app_iter = application(self .environ, start_response)\n File \"/usr/lib/python2.7/dist-packages/webob/dec.py\", line 130, in __call__\n resp = self.call_func(req, *args, **self.kwargs)\n File \"/usr/lib/python2.7/dist-packages/webob/dec.py\", line 195, in call_func\n return self.func(req, *args,  **kwargs)\n File \"/usr/lib/python2.7/dist-packages/oslo_middleware/base.py\", line 114, in __call__\n response = req.get_response(self.application)\n File \"/usr/lib/python2.7/dist-packages/webob/request.py\", line 1317, in send\n application, catch_exc_info=False)\ n File \"/usr/lib/python2.7/dist-packages/webob/request.py\", line 1281, in call_application\n app_iter = application(self.environ, start_response)\n File \"/usr/lib/python2.7/dist-packages/webob/dec.py\", line 130, in __call__\n resp = self.call_func(req, *args, **se lf.kwargs)\n File \"/usr/lib/python2.7/dist-packages/webob/dec.py\", line 195, in call_func\n return self.func(req, *args, **kwargs)\n File \"/usr/lib/python2.7/dist-packages/heat/common/wsgi.py\", line 584, in __call__\n response = req.get_response(self.application)\ n File \"/usr/lib/python2.7/dist-packages/webob/request.py\", line 1317, in send\n application, catch_exc_info=False)\n File \"/usr/lib/python2.7/dist-packages/webob/request.py\", line 1281, in call_application\n app_iter = application(self.environ, start_response)\n  File \"/usr/lib/python2.7/dist-packages/webob/dec.py\", line 130, in __call__\n resp = self.call_func(req, *args, **self.kwargs)\n File \"/usr/lib/python2.7/dist-packages/webob/dec.py\", line 195, in call_func\n return self.func(req, *args, **kwargs)\n File \"/usr/li b/python2.7/dist-packages/heat/common/wsgi.py\", line 584, in __call__\n response = req.get_response(self.application)\n File \"/usr/lib/python2.7/dist-packages/webob/request.py\", line 1317, in send\n application, catch_exc_info=False)\n File \"/usr/lib/python2.7/dis t-packages/webob/request.py\", line 1281, in call_application\n app_iter = application(self.environ, start_response)\n File \"/usr/lib/python2.7/dist-packages/webob/dec.py\", line 130, in __call__\n resp = self.call_func(req, *args, **self.kwargs)\n File \"/usr/lib/py thon2.7/dist-packages/webob/dec.py\", line 195, in call_func\n return self.func(req, *args, **kwargs)\n File \"/usr/lib/python2.7/dist-packages/keystonemiddleware/auth_token/__init__.py\", line 467, in __call__\n response = req.get_response(self._app)\n File \"/usr/li b/python2.7/dist-packages/webob/request.py\", line 1317, in send\n application, catch_exc_info=False)\n File \"/usr/lib/python2.7/dist-packages/webob/request.py\", line 1281, in call_application\n app_iter = application(self.environ, start_response)\n File \"/usr/lib/ python2.7/dist-packages/webob/dec.py\", line 130, in __call__\n resp = self.call_func(req, *args, **self.kwargs)\n File \"/usr/lib/python2.7/dist-packages/webob/dec.py\", line 195, in call_func\n return self.func(req, *args, **kwargs)\n File \"/usr/lib/python2.7/dist- packages/heat/common/wsgi.py\", line 581, in __call__\n response = self.process_request(req)\n File \"/usr/lib/python2.7/dist-packages/heat/common/context.py\", line 311, in process_request\n project_domain_id=project_domain_id)\n File \"/usr/lib/python2.7/dist-packag es/heat/common/context.py\", line 256, in make_context\n return self.ctxcls(*args, **kwargs)\n File \"/usr/lib/python2.7/dist-packages/heat/common/context.py\", line 109, in __init__\n self.is_admin = self.policy.check_is_admin(self)\n File \"/usr/lib/python2[40/1725] ackages/heat/common/policy.py\", line 88, in check_is_admin\n return self._check(context, 'context_is_admin', target={}, exc=None)\n File \"/usr/lib/python2.7/dist-packages/heat/common/policy.py\", line 65, in _check\n credentials = context.to_dict()\n File \"/usr/lib /python2.7/dist-packages/heat/common/context.py\", line 127, in to_dict\n tenant=self.tenant_id or '-')\nUnicodeEncodeError: 'ascii' codec can't encode character u'\\u0101' in position 1: ordinal not in range(128)\n", "type": "UnicodeEncodeError"}, "title": "Bad Request"} Traceback (most recent call last):   File "/usr/bin/heat", line 10, in <module>     sys.exit(main())   File "/usr/lib/python2.7/dist-packages/heatclient/shell.py", line 702, in main     HeatShell().main(args)   File "/usr/lib/python2.7/dist-packages/heatclient/shell.py", line 652, in main     args.func(client, args)   File "/usr/lib/python2.7/dist-packages/heatclient/v1/shell.py", line 675, in do_stack_list     utils.print_list(stacks, fields, sortby_index=sortby_index)   File "/usr/lib/python2.7/dist-packages/heatclient/openstack/common/cliutils.py", line 169, in print_list     for o in objs:   File "/usr/lib/python2.7/dist-packages/heatclient/v1/stacks.py", line 127, in paginate     stacks = self._list(url, 'stacks')   File "/usr/lib/python2.7/dist-packages/heatclient/openstack/common/apiclient/base.py", line 135, in _list     body = self.client.get(url).json()   File "/usr/lib/python2.7/dist-packages/keystoneclient/adapter.py", line 176, in get     return self.request(url, 'GET', **kwargs)   File "/usr/lib/python2.7/dist-packages/heatclient/common/http.py", line 311, in request     raise exc.from_response(resp) heatclient.exc.HTTPBadRequest: ERROR: 'ascii' codec can't encode character u'\u0101' in position 1: ordinal not in range(128)
2018-04-24 14:19:21 Seyeong Kim attachment added lp1761629_queens.debdiff https://bugs.launchpad.net/cloud-archive/+bug/1761629/+attachment/5126530/+files/lp1761629_queens.debdiff
2018-04-24 14:19:44 Seyeong Kim description [Impact] When use old non unicode user id, such as Gāo heat stack-list shows unicode error Affected to Xenial, Artful ( tested ) UCA Mitaka, Ocata, Pike ( testing Queens ) [Test Case] 1. deploy openstack env 2. source novarc ( as admin user ) ( or novarcv3_project as admin ) 3. keystone user-create --name test - openstack user create --domain admin_domain test 4. openstack user set --password-prompt test 4. log into keystone node and install mysql-client 5. connect to mysql with keystone user 6. do below query - set foreign_key_checks = 0; - update local_user set user_id='Gāo' where user_id='UUID'; - update user set id='Gāo' where id='UUID'; - set foreign_key_checks = 1; 7. keystone user-role-add --user test --tenant admin --role Admin - openstack role add --user test --domain admin_domain Admin - openstack role add --user test --project [admin project id] Admin - openstack role add --user test --project [admin project id] Member 8. source novarc ( as test user ) ( or novarcv3_project as test user ) 9. heat stack-list result is like [Others] [Regression] This patch fixes simple unicode. but heat api needs to be restarted. Could be short outage during restarting. [Others] Below is test result heat --debug stack-list DEBUG (session) REQ: curl -g -i -X GET http://10.0.11.184:5000/v2.0 -H "Accept: application/json" -H "User-Agent: python-keystoneclient" INFO (connectionpool) Starting new HTTP connection (1): 10.0.11.184 DEBUG (connectionpool) "GET /v2.0 HTTP/1.1" 200 337 DEBUG (session) RESP: [200] Content-Length: 337 Vary: X-Auth-Token Keep-Alive: timeout=5, max=100 Server: Apache/2.4.18 (Ubuntu) Connection: Keep-Alive Date: Thu, 05 Apr 2018 21:20:39 GMT x-openstack-request-id: req-df64189d-c865-47fb-b89d-698d61dfafdc Content-Type: [68/1725] on/json X-Distribution: Ubuntu RESP BODY: {"version": {"status": "stable", "updated": "2014-04-17T00:00:00Z", "media-types": [{"base": "application/json", "type": "application/vnd.openstack.identity-v2.0+json"}], "id": "v2.0", "links": [{"href": "http://10.0.11.184:5000/v2.0/", "rel": "self"}, {"href": "ht tp://docs.openstack.org/", "type": "text/html", "rel": "describedby"}]}} DEBUG (v2) Making authentication request to http://10.0.11.184:5000/v2.0/tokens DEBUG (connectionpool) "POST /v2.0/tokens HTTP/1.1" 200 3105 DEBUG (session) REQ: curl -g -i -X GET http://10.0.11.170:8004/v1/c9c6d2b72f74458bada7f94501369b18/stacks? -H "User-Agent: python-heatclient" -H "Accept: application/json" -H "X-Auth-Token: {SHA1}ad359574acee284a60451f9e2340ec46d6e17728" INFO (connectionpool) Starting new HTTP connection (1): 10.0.11.170 DEBUG (connectionpool) "GET /v1/c9c6d2b72f74458bada7f94501369b18/stacks HTTP/1.1" 400 5508 DEBUG (session) RESP: [400] Date: Thu, 05 Apr 2018 21:20:39 GMT Content-Length: 5508 Content-Type: application/json; charset=UTF-8 Connection: keep-alive RESP BODY: {"explanation": "The server could not comply with the request since it is either malformed or otherwise incorrect.", "code": 400, "error": {"message": "'ascii' codec can't encode character u'\\u0101' in position 1: ordinal not in range(128)", "traceback": "Tracebac k (most recent call last):\n File \"/usr/lib/python2.7/dist-packages/heat/api/middleware/fault.py\", line 163, in process_request\n return req.get_response(self.application)\n File \"/usr/lib/python2.7/dist-packages/webob/request.py\", line 1317, in send\n application , catch_exc_info=False)\n File \"/usr/lib/python2.7/dist-packages/webob/request.py\", line 1281, in call_application\n app_iter = application(self.environ, start_response)\n File \"/usr/lib/python2.7/dist-packages/webob/dec.py\", line 130, in __call__\n resp = self.ca ll_func(req, *args, **self.kwargs)\n File \"/usr/lib/python2.7/dist-packages/webob/dec.py\", line 195, in call_func\n return self.func(req, *args, **kwargs)\n File \"/usr/lib/python2.7/dist-packages/oslo_middleware/base.py\", line 114, in __call__\n response = req.get _response(self.application)\n File \"/usr/lib/python2.7/dist-packages/webob/request.py\", line 1317, in send\n application, catch_exc_info=False)\n File \"/usr/lib/python2.7/dist-packages/webob/request.py\", line 1281, in call_application\n app_iter = application(self .environ, start_response)\n File \"/usr/lib/python2.7/dist-packages/webob/dec.py\", line 130, in __call__\n resp = self.call_func(req, *args, **self.kwargs)\n File \"/usr/lib/python2.7/dist-packages/webob/dec.py\", line 195, in call_func\n return self.func(req, *args,  **kwargs)\n File \"/usr/lib/python2.7/dist-packages/oslo_middleware/base.py\", line 114, in __call__\n response = req.get_response(self.application)\n File \"/usr/lib/python2.7/dist-packages/webob/request.py\", line 1317, in send\n application, catch_exc_info=False)\ n File \"/usr/lib/python2.7/dist-packages/webob/request.py\", line 1281, in call_application\n app_iter = application(self.environ, start_response)\n File \"/usr/lib/python2.7/dist-packages/webob/dec.py\", line 130, in __call__\n resp = self.call_func(req, *args, **se lf.kwargs)\n File \"/usr/lib/python2.7/dist-packages/webob/dec.py\", line 195, in call_func\n return self.func(req, *args, **kwargs)\n File \"/usr/lib/python2.7/dist-packages/heat/common/wsgi.py\", line 584, in __call__\n response = req.get_response(self.application)\ n File \"/usr/lib/python2.7/dist-packages/webob/request.py\", line 1317, in send\n application, catch_exc_info=False)\n File \"/usr/lib/python2.7/dist-packages/webob/request.py\", line 1281, in call_application\n app_iter = application(self.environ, start_response)\n  File \"/usr/lib/python2.7/dist-packages/webob/dec.py\", line 130, in __call__\n resp = self.call_func(req, *args, **self.kwargs)\n File \"/usr/lib/python2.7/dist-packages/webob/dec.py\", line 195, in call_func\n return self.func(req, *args, **kwargs)\n File \"/usr/li b/python2.7/dist-packages/heat/common/wsgi.py\", line 584, in __call__\n response = req.get_response(self.application)\n File \"/usr/lib/python2.7/dist-packages/webob/request.py\", line 1317, in send\n application, catch_exc_info=False)\n File \"/usr/lib/python2.7/dis t-packages/webob/request.py\", line 1281, in call_application\n app_iter = application(self.environ, start_response)\n File \"/usr/lib/python2.7/dist-packages/webob/dec.py\", line 130, in __call__\n resp = self.call_func(req, *args, **self.kwargs)\n File \"/usr/lib/py thon2.7/dist-packages/webob/dec.py\", line 195, in call_func\n return self.func(req, *args, **kwargs)\n File \"/usr/lib/python2.7/dist-packages/keystonemiddleware/auth_token/__init__.py\", line 467, in __call__\n response = req.get_response(self._app)\n File \"/usr/li b/python2.7/dist-packages/webob/request.py\", line 1317, in send\n application, catch_exc_info=False)\n File \"/usr/lib/python2.7/dist-packages/webob/request.py\", line 1281, in call_application\n app_iter = application(self.environ, start_response)\n File \"/usr/lib/ python2.7/dist-packages/webob/dec.py\", line 130, in __call__\n resp = self.call_func(req, *args, **self.kwargs)\n File \"/usr/lib/python2.7/dist-packages/webob/dec.py\", line 195, in call_func\n return self.func(req, *args, **kwargs)\n File \"/usr/lib/python2.7/dist- packages/heat/common/wsgi.py\", line 581, in __call__\n response = self.process_request(req)\n File \"/usr/lib/python2.7/dist-packages/heat/common/context.py\", line 311, in process_request\n project_domain_id=project_domain_id)\n File \"/usr/lib/python2.7/dist-packag es/heat/common/context.py\", line 256, in make_context\n return self.ctxcls(*args, **kwargs)\n File \"/usr/lib/python2.7/dist-packages/heat/common/context.py\", line 109, in __init__\n self.is_admin = self.policy.check_is_admin(self)\n File \"/usr/lib/python2[40/1725] ackages/heat/common/policy.py\", line 88, in check_is_admin\n return self._check(context, 'context_is_admin', target={}, exc=None)\n File \"/usr/lib/python2.7/dist-packages/heat/common/policy.py\", line 65, in _check\n credentials = context.to_dict()\n File \"/usr/lib /python2.7/dist-packages/heat/common/context.py\", line 127, in to_dict\n tenant=self.tenant_id or '-')\nUnicodeEncodeError: 'ascii' codec can't encode character u'\\u0101' in position 1: ordinal not in range(128)\n", "type": "UnicodeEncodeError"}, "title": "Bad Request"} Traceback (most recent call last):   File "/usr/bin/heat", line 10, in <module>     sys.exit(main())   File "/usr/lib/python2.7/dist-packages/heatclient/shell.py", line 702, in main     HeatShell().main(args)   File "/usr/lib/python2.7/dist-packages/heatclient/shell.py", line 652, in main     args.func(client, args)   File "/usr/lib/python2.7/dist-packages/heatclient/v1/shell.py", line 675, in do_stack_list     utils.print_list(stacks, fields, sortby_index=sortby_index)   File "/usr/lib/python2.7/dist-packages/heatclient/openstack/common/cliutils.py", line 169, in print_list     for o in objs:   File "/usr/lib/python2.7/dist-packages/heatclient/v1/stacks.py", line 127, in paginate     stacks = self._list(url, 'stacks')   File "/usr/lib/python2.7/dist-packages/heatclient/openstack/common/apiclient/base.py", line 135, in _list     body = self.client.get(url).json()   File "/usr/lib/python2.7/dist-packages/keystoneclient/adapter.py", line 176, in get     return self.request(url, 'GET', **kwargs)   File "/usr/lib/python2.7/dist-packages/heatclient/common/http.py", line 311, in request     raise exc.from_response(resp) heatclient.exc.HTTPBadRequest: ERROR: 'ascii' codec can't encode character u'\u0101' in position 1: ordinal not in range(128) [Impact] When use old non unicode user id, such as Gāo heat stack-list shows unicode error Affected to Xenial, Artful UCA Mitaka, Ocata, Pike, Queens [Test Case] 1. deploy openstack env 2. source novarc ( as admin user ) ( or novarcv3_project as admin ) 3. keystone user-create --name test - openstack user create --domain admin_domain test 4. openstack user set --password-prompt test 4. log into keystone node and install mysql-client 5. connect to mysql with keystone user 6. do below query - set foreign_key_checks = 0; - update local_user set user_id='Gāo' where user_id='UUID'; - update user set id='Gāo' where id='UUID'; - set foreign_key_checks = 1; 7. keystone user-role-add --user test --tenant admin --role Admin - openstack role add --user test --domain admin_domain Admin - openstack role add --user test --project [admin project id] Admin - openstack role add --user test --project [admin project id] Member 8. source novarc ( as test user ) ( or novarcv3_project as test user ) 9. heat stack-list result is like [Others] [Regression] This patch fixes simple unicode. but heat api needs to be restarted. Could be short outage during restarting. [Others] Below is test result heat --debug stack-list DEBUG (session) REQ: curl -g -i -X GET http://10.0.11.184:5000/v2.0 -H "Accept: application/json" -H "User-Agent: python-keystoneclient" INFO (connectionpool) Starting new HTTP connection (1): 10.0.11.184 DEBUG (connectionpool) "GET /v2.0 HTTP/1.1" 200 337 DEBUG (session) RESP: [200] Content-Length: 337 Vary: X-Auth-Token Keep-Alive: timeout=5, max=100 Server: Apache/2.4.18 (Ubuntu) Connection: Keep-Alive Date: Thu, 05 Apr 2018 21:20:39 GMT x-openstack-request-id: req-df64189d-c865-47fb-b89d-698d61dfafdc Content-Type: [68/1725] on/json X-Distribution: Ubuntu RESP BODY: {"version": {"status": "stable", "updated": "2014-04-17T00:00:00Z", "media-types": [{"base": "application/json", "type": "application/vnd.openstack.identity-v2.0+json"}], "id": "v2.0", "links": [{"href": "http://10.0.11.184:5000/v2.0/", "rel": "self"}, {"href": "ht tp://docs.openstack.org/", "type": "text/html", "rel": "describedby"}]}} DEBUG (v2) Making authentication request to http://10.0.11.184:5000/v2.0/tokens DEBUG (connectionpool) "POST /v2.0/tokens HTTP/1.1" 200 3105 DEBUG (session) REQ: curl -g -i -X GET http://10.0.11.170:8004/v1/c9c6d2b72f74458bada7f94501369b18/stacks? -H "User-Agent: python-heatclient" -H "Accept: application/json" -H "X-Auth-Token: {SHA1}ad359574acee284a60451f9e2340ec46d6e17728" INFO (connectionpool) Starting new HTTP connection (1): 10.0.11.170 DEBUG (connectionpool) "GET /v1/c9c6d2b72f74458bada7f94501369b18/stacks HTTP/1.1" 400 5508 DEBUG (session) RESP: [400] Date: Thu, 05 Apr 2018 21:20:39 GMT Content-Length: 5508 Content-Type: application/json; charset=UTF-8 Connection: keep-alive RESP BODY: {"explanation": "The server could not comply with the request since it is either malformed or otherwise incorrect.", "code": 400, "error": {"message": "'ascii' codec can't encode character u'\\u0101' in position 1: ordinal not in range(128)", "traceback": "Tracebac k (most recent call last):\n File \"/usr/lib/python2.7/dist-packages/heat/api/middleware/fault.py\", line 163, in process_request\n return req.get_response(self.application)\n File \"/usr/lib/python2.7/dist-packages/webob/request.py\", line 1317, in send\n application , catch_exc_info=False)\n File \"/usr/lib/python2.7/dist-packages/webob/request.py\", line 1281, in call_application\n app_iter = application(self.environ, start_response)\n File \"/usr/lib/python2.7/dist-packages/webob/dec.py\", line 130, in __call__\n resp = self.ca ll_func(req, *args, **self.kwargs)\n File \"/usr/lib/python2.7/dist-packages/webob/dec.py\", line 195, in call_func\n return self.func(req, *args, **kwargs)\n File \"/usr/lib/python2.7/dist-packages/oslo_middleware/base.py\", line 114, in __call__\n response = req.get _response(self.application)\n File \"/usr/lib/python2.7/dist-packages/webob/request.py\", line 1317, in send\n application, catch_exc_info=False)\n File \"/usr/lib/python2.7/dist-packages/webob/request.py\", line 1281, in call_application\n app_iter = application(self .environ, start_response)\n File \"/usr/lib/python2.7/dist-packages/webob/dec.py\", line 130, in __call__\n resp = self.call_func(req, *args, **self.kwargs)\n File \"/usr/lib/python2.7/dist-packages/webob/dec.py\", line 195, in call_func\n return self.func(req, *args,  **kwargs)\n File \"/usr/lib/python2.7/dist-packages/oslo_middleware/base.py\", line 114, in __call__\n response = req.get_response(self.application)\n File \"/usr/lib/python2.7/dist-packages/webob/request.py\", line 1317, in send\n application, catch_exc_info=False)\ n File \"/usr/lib/python2.7/dist-packages/webob/request.py\", line 1281, in call_application\n app_iter = application(self.environ, start_response)\n File \"/usr/lib/python2.7/dist-packages/webob/dec.py\", line 130, in __call__\n resp = self.call_func(req, *args, **se lf.kwargs)\n File \"/usr/lib/python2.7/dist-packages/webob/dec.py\", line 195, in call_func\n return self.func(req, *args, **kwargs)\n File \"/usr/lib/python2.7/dist-packages/heat/common/wsgi.py\", line 584, in __call__\n response = req.get_response(self.application)\ n File \"/usr/lib/python2.7/dist-packages/webob/request.py\", line 1317, in send\n application, catch_exc_info=False)\n File \"/usr/lib/python2.7/dist-packages/webob/request.py\", line 1281, in call_application\n app_iter = application(self.environ, start_response)\n  File \"/usr/lib/python2.7/dist-packages/webob/dec.py\", line 130, in __call__\n resp = self.call_func(req, *args, **self.kwargs)\n File \"/usr/lib/python2.7/dist-packages/webob/dec.py\", line 195, in call_func\n return self.func(req, *args, **kwargs)\n File \"/usr/li b/python2.7/dist-packages/heat/common/wsgi.py\", line 584, in __call__\n response = req.get_response(self.application)\n File \"/usr/lib/python2.7/dist-packages/webob/request.py\", line 1317, in send\n application, catch_exc_info=False)\n File \"/usr/lib/python2.7/dis t-packages/webob/request.py\", line 1281, in call_application\n app_iter = application(self.environ, start_response)\n File \"/usr/lib/python2.7/dist-packages/webob/dec.py\", line 130, in __call__\n resp = self.call_func(req, *args, **self.kwargs)\n File \"/usr/lib/py thon2.7/dist-packages/webob/dec.py\", line 195, in call_func\n return self.func(req, *args, **kwargs)\n File \"/usr/lib/python2.7/dist-packages/keystonemiddleware/auth_token/__init__.py\", line 467, in __call__\n response = req.get_response(self._app)\n File \"/usr/li b/python2.7/dist-packages/webob/request.py\", line 1317, in send\n application, catch_exc_info=False)\n File \"/usr/lib/python2.7/dist-packages/webob/request.py\", line 1281, in call_application\n app_iter = application(self.environ, start_response)\n File \"/usr/lib/ python2.7/dist-packages/webob/dec.py\", line 130, in __call__\n resp = self.call_func(req, *args, **self.kwargs)\n File \"/usr/lib/python2.7/dist-packages/webob/dec.py\", line 195, in call_func\n return self.func(req, *args, **kwargs)\n File \"/usr/lib/python2.7/dist- packages/heat/common/wsgi.py\", line 581, in __call__\n response = self.process_request(req)\n File \"/usr/lib/python2.7/dist-packages/heat/common/context.py\", line 311, in process_request\n project_domain_id=project_domain_id)\n File \"/usr/lib/python2.7/dist-packag es/heat/common/context.py\", line 256, in make_context\n return self.ctxcls(*args, **kwargs)\n File \"/usr/lib/python2.7/dist-packages/heat/common/context.py\", line 109, in __init__\n self.is_admin = self.policy.check_is_admin(self)\n File \"/usr/lib/python2[40/1725] ackages/heat/common/policy.py\", line 88, in check_is_admin\n return self._check(context, 'context_is_admin', target={}, exc=None)\n File \"/usr/lib/python2.7/dist-packages/heat/common/policy.py\", line 65, in _check\n credentials = context.to_dict()\n File \"/usr/lib /python2.7/dist-packages/heat/common/context.py\", line 127, in to_dict\n tenant=self.tenant_id or '-')\nUnicodeEncodeError: 'ascii' codec can't encode character u'\\u0101' in position 1: ordinal not in range(128)\n", "type": "UnicodeEncodeError"}, "title": "Bad Request"} Traceback (most recent call last):   File "/usr/bin/heat", line 10, in <module>     sys.exit(main())   File "/usr/lib/python2.7/dist-packages/heatclient/shell.py", line 702, in main     HeatShell().main(args)   File "/usr/lib/python2.7/dist-packages/heatclient/shell.py", line 652, in main     args.func(client, args)   File "/usr/lib/python2.7/dist-packages/heatclient/v1/shell.py", line 675, in do_stack_list     utils.print_list(stacks, fields, sortby_index=sortby_index)   File "/usr/lib/python2.7/dist-packages/heatclient/openstack/common/cliutils.py", line 169, in print_list     for o in objs:   File "/usr/lib/python2.7/dist-packages/heatclient/v1/stacks.py", line 127, in paginate     stacks = self._list(url, 'stacks')   File "/usr/lib/python2.7/dist-packages/heatclient/openstack/common/apiclient/base.py", line 135, in _list     body = self.client.get(url).json()   File "/usr/lib/python2.7/dist-packages/keystoneclient/adapter.py", line 176, in get     return self.request(url, 'GET', **kwargs)   File "/usr/lib/python2.7/dist-packages/heatclient/common/http.py", line 311, in request     raise exc.from_response(resp) heatclient.exc.HTTPBadRequest: ERROR: 'ascii' codec can't encode character u'\u0101' in position 1: ordinal not in range(128)
2018-05-07 07:51:31 Rico Lin heat: milestone no-priority-tag-bugs
2018-05-15 16:17:09 OpenStack Infra tags patch sts sts-sru-needed in-stable-queens patch sts sts-sru-needed
2018-05-30 13:59:21 Edward Hope-Morley nominated for series cloud-archive/pike
2018-05-30 13:59:21 Edward Hope-Morley nominated for series cloud-archive/queens
2018-05-30 13:59:21 Edward Hope-Morley nominated for series cloud-archive/mitaka
2018-05-30 13:59:21 Edward Hope-Morley nominated for series cloud-archive/ocata
2018-05-30 13:59:43 Edward Hope-Morley nominated for series cloud-archive/rocky
2018-05-30 14:04:43 Corey Bryant bug task added cloud-archive/rocky
2018-05-30 14:04:45 Corey Bryant bug task added cloud-archive/queens
2018-05-30 14:04:47 Corey Bryant bug task added cloud-archive/pike
2018-05-30 14:04:49 Corey Bryant bug task added cloud-archive/ocata
2018-05-30 14:04:51 Corey Bryant bug task added cloud-archive/mitaka
2018-05-30 14:05:03 Corey Bryant bug task added heat (Ubuntu Artful)
2018-05-30 14:05:06 Corey Bryant bug task added heat (Ubuntu Bionic)
2018-05-30 14:05:09 Corey Bryant bug task added heat (Ubuntu Xenial)
2018-05-30 14:56:24 Corey Bryant heat (Ubuntu): importance Undecided High
2018-05-30 14:56:24 Corey Bryant heat (Ubuntu): status New Fix Released
2018-05-30 14:56:55 Corey Bryant cloud-archive/rocky: importance Undecided High
2018-05-30 14:56:55 Corey Bryant cloud-archive/rocky: status New Fix Committed
2018-05-30 14:57:09 Corey Bryant heat (Ubuntu Xenial): importance Undecided High
2018-05-30 14:57:19 Corey Bryant cloud-archive/mitaka: importance Undecided High
2018-05-30 17:36:40 Corey Bryant cloud-archive/queens: importance Undecided High
2018-05-30 17:36:54 Corey Bryant cloud-archive/pike: importance Undecided High
2018-05-30 17:37:12 Corey Bryant cloud-archive/ocata: importance Undecided High
2018-05-30 17:37:22 Corey Bryant heat (Ubuntu Artful): importance Undecided High
2018-05-30 17:37:32 Corey Bryant heat (Ubuntu Bionic): importance Undecided High
2018-05-30 17:37:42 Corey Bryant heat (Ubuntu Xenial): status New Triaged
2018-05-30 17:37:50 Corey Bryant heat (Ubuntu Artful): status New Triaged
2018-05-30 17:38:01 Corey Bryant heat (Ubuntu Bionic): status New Triaged
2018-05-30 18:06:48 Corey Bryant cloud-archive/queens: status New Triaged
2018-05-30 18:07:02 Corey Bryant cloud-archive/pike: status New Triaged
2018-05-30 18:07:13 Corey Bryant cloud-archive/ocata: status New Triaged
2018-05-30 18:08:50 Corey Bryant cloud-archive/mitaka: status New Triaged
2018-05-31 12:13:22 Seyeong Kim attachment added Thanks Corey, I re upload them from this. https://bugs.launchpad.net/heat/+bug/1761629/+attachment/5146924/+files/lp1761629_xenial_v2.debdiff
2018-05-31 12:14:08 Seyeong Kim attachment added lp1761629_mitaka_v2.debdiff https://bugs.launchpad.net/heat/+bug/1761629/+attachment/5146925/+files/lp1761629_mitaka_v2.debdiff
2018-05-31 12:59:59 Seyeong Kim attachment added lp1761629_ocata_v2.debdiff https://bugs.launchpad.net/heat/+bug/1761629/+attachment/5146939/+files/lp1761629_ocata_v2.debdiff
2018-05-31 17:06:14 Corey Bryant cloud-archive/ocata: status Triaged Fix Committed
2018-05-31 17:06:17 Corey Bryant tags in-stable-queens patch sts sts-sru-needed in-stable-queens patch sts sts-sru-needed verification-ocata-needed
2018-05-31 18:08:20 Corey Bryant bug added subscriber Ubuntu Stable Release Updates Team
2018-06-09 06:17:48 Seyeong Kim tags in-stable-queens patch sts sts-sru-needed verification-ocata-needed in-stable-queens patch sts sts-sru-needed verification-ocata-done
2018-06-14 22:01:46 Brian Murray heat (Ubuntu Bionic): status Triaged Fix Committed
2018-06-14 22:01:52 Brian Murray bug added subscriber SRU Verification
2018-06-14 22:01:55 Brian Murray tags in-stable-queens patch sts sts-sru-needed verification-ocata-done in-stable-queens patch sts sts-sru-needed verification-needed verification-needed-bionic verification-ocata-done
2018-06-14 22:02:50 Brian Murray heat (Ubuntu Artful): status Triaged Fix Committed
2018-06-14 22:02:56 Brian Murray tags in-stable-queens patch sts sts-sru-needed verification-needed verification-needed-bionic verification-ocata-done in-stable-queens patch sts sts-sru-needed verification-needed verification-needed-artful verification-needed-bionic verification-ocata-done
2018-06-14 22:04:09 Brian Murray heat (Ubuntu Xenial): status Triaged Fix Committed
2018-06-14 22:04:15 Brian Murray tags in-stable-queens patch sts sts-sru-needed verification-needed verification-needed-artful verification-needed-bionic verification-ocata-done in-stable-queens patch sts sts-sru-needed verification-needed verification-needed-artful verification-needed-bionic verification-needed-xenial verification-ocata-done
2018-06-14 22:12:20 Brian Murray removed subscriber Ubuntu Sponsors Team
2018-06-16 14:20:03 Seyeong Kim tags in-stable-queens patch sts sts-sru-needed verification-needed verification-needed-artful verification-needed-bionic verification-needed-xenial verification-ocata-done in-stable-queens patch sts sts-sru-needed verification-done-xenial verification-needed verification-needed-artful verification-needed-bionic verification-ocata-done
2018-06-18 03:40:35 Seyeong Kim tags in-stable-queens patch sts sts-sru-needed verification-done-xenial verification-needed verification-needed-artful verification-needed-bionic verification-ocata-done in-stable-queens patch sts sts-sru-needed verification-done-bionic verification-done-xenial verification-needed verification-needed-artful verification-ocata-done
2018-06-18 05:17:51 Seyeong Kim tags in-stable-queens patch sts sts-sru-needed verification-done-bionic verification-done-xenial verification-needed verification-needed-artful verification-ocata-done in-stable-queens patch sts sts-sru-needed verification-done-artful verification-done-bionic verification-done-xenial verification-needed verification-ocata-done
2018-06-18 13:56:48 Corey Bryant cloud-archive/queens: status Triaged Fix Committed
2018-06-18 13:56:50 Corey Bryant tags in-stable-queens patch sts sts-sru-needed verification-done-artful verification-done-bionic verification-done-xenial verification-needed verification-ocata-done in-stable-queens patch sts sts-sru-needed verification-done-artful verification-done-bionic verification-done-xenial verification-needed verification-ocata-done verification-queens-needed
2018-06-18 14:01:48 Corey Bryant cloud-archive/pike: status Triaged Fix Committed
2018-06-18 14:01:50 Corey Bryant tags in-stable-queens patch sts sts-sru-needed verification-done-artful verification-done-bionic verification-done-xenial verification-needed verification-ocata-done verification-queens-needed in-stable-queens patch sts sts-sru-needed verification-done-artful verification-done-bionic verification-done-xenial verification-needed verification-ocata-done verification-pike-needed verification-queens-needed
2018-06-18 14:02:47 Corey Bryant cloud-archive/mitaka: status Triaged Fix Committed
2018-06-18 14:02:50 Corey Bryant tags in-stable-queens patch sts sts-sru-needed verification-done-artful verification-done-bionic verification-done-xenial verification-needed verification-ocata-done verification-pike-needed verification-queens-needed in-stable-queens patch sts sts-sru-needed verification-done-artful verification-done-bionic verification-done-xenial verification-mitaka-needed verification-needed verification-ocata-done verification-pike-needed verification-queens-needed
2018-06-20 03:47:55 Seyeong Kim tags in-stable-queens patch sts sts-sru-needed verification-done-artful verification-done-bionic verification-done-xenial verification-mitaka-needed verification-needed verification-ocata-done verification-pike-needed verification-queens-needed in-stable-queens patch sts sts-sru-needed verification-done-artful verification-done-bionic verification-done-xenial verification-mitaka-needed verification-needed verification-ocata-done verification-pike-needed verification-queens-done
2018-06-20 07:54:12 Seyeong Kim tags in-stable-queens patch sts sts-sru-needed verification-done-artful verification-done-bionic verification-done-xenial verification-mitaka-needed verification-needed verification-ocata-done verification-pike-needed verification-queens-done in-stable-queens patch sts sts-sru-needed verification-done-artful verification-done-bionic verification-done-xenial verification-mitaka-needed verification-needed verification-ocata-done verification-pike-done verification-queens-done
2018-06-20 08:38:47 Seyeong Kim tags in-stable-queens patch sts sts-sru-needed verification-done-artful verification-done-bionic verification-done-xenial verification-mitaka-needed verification-needed verification-ocata-done verification-pike-done verification-queens-done in-stable-queens patch sts sts-sru-needed verification-done-artful verification-done-bionic verification-done-xenial verification-mitaka-done verification-needed verification-ocata-done verification-pike-done verification-queens-done
2018-06-25 09:24:13 Łukasz Zemczak removed subscriber Ubuntu Stable Release Updates Team
2018-06-25 09:34:17 Launchpad Janitor heat (Ubuntu Bionic): status Fix Committed Fix Released
2018-06-25 09:48:06 Launchpad Janitor heat (Ubuntu Artful): status Fix Committed Fix Released
2018-06-25 09:49:01 Launchpad Janitor heat (Ubuntu Xenial): status Fix Committed Fix Released
2018-06-25 12:51:05 Corey Bryant cloud-archive/queens: status Fix Committed Fix Released
2018-06-25 12:53:17 Corey Bryant cloud-archive/pike: status Fix Committed Fix Released
2018-06-25 12:55:41 Corey Bryant cloud-archive/ocata: status Fix Committed Fix Released
2018-06-25 12:56:56 Corey Bryant cloud-archive/mitaka: status Fix Committed Fix Released
2018-07-16 13:19:03 Edward Hope-Morley tags in-stable-queens patch sts sts-sru-needed verification-done-artful verification-done-bionic verification-done-xenial verification-mitaka-done verification-needed verification-ocata-done verification-pike-done verification-queens-done in-stable-queens patch sts sts-sru-done verification-done-artful verification-done-bionic verification-done-xenial verification-mitaka-done verification-needed verification-ocata-done verification-pike-done verification-queens-done
2018-08-08 22:51:55 OpenStack Infra tags in-stable-queens patch sts sts-sru-done verification-done-artful verification-done-bionic verification-done-xenial verification-mitaka-done verification-needed verification-ocata-done verification-pike-done verification-queens-done in-stable-pike in-stable-queens patch sts sts-sru-done verification-done-artful verification-done-bionic verification-done-xenial verification-mitaka-done verification-needed verification-ocata-done verification-pike-done verification-queens-done
2018-10-03 20:00:50 Corey Bryant cloud-archive/rocky: status Fix Committed Fix Released