globalization: UnicodeEncodeError: 'ascii' codec can't encode characters in position 35-36: ordinal not in range(128)

Bug #1200053 reported by YangLei
6
This bug affects 1 person
Affects Status Importance Assigned to Milestone
OpenStack Heat
Invalid
Low
Nikunj Aggarwal

Bug Description

add a non-existence parameter GVT in the stack-create operation.
it returns the exception "u'UnknownUserParameter: The Parameter (GVT) was not defined in template"
But when i translate this exception message to chinese (zh_CN), and msgfmt po to mo, start the service in zh_CN.utf8 locale (per https://wiki.openstack.org/wiki/I18NSupport).
I see the follow error in stack-create operation:

yanglei@yanglei-ThinkCentre-M58:~/installed_openstack_devstack/heat$ heat -d -v stack-create "teststack" -f /var/log/heat/templates/WordPress_Single_Instance.template -P "GVT=GVTTest;InstanceType=m1.large;DBUsername=wp;DBPassword=verybadpassword;KeyName=heat_key;LinuxDistribution=F17"
INFO (connectionpool:195) Starting new HTTP connection (1): 127.0.0.1
DEBUG (connectionpool:289) "POST /v2.0/tokens HTTP/1.1" 200 8647
DEBUG (http:111) curl -i -X POST -H 'X-Auth-User: admin' -H 'X-Auth-Token: MIIPOwYJKoZIhvcNAQcCoIIPLDCCDygCAQExCTAHBgUrDgMCGjCCDZEGCSqGSIb3DQEHAaCCDYIEgg1+eyJhY2Nlc3MiOiB7InRva2VuIjogeyJpc3N1ZWRfYXQiOiAiMjAxMy0wNy0xMFQwNTo0ODo0MC45NDE3MzUiLCAiZXhwaXJlcyI6ICIyMDEzLTA3LTExVDA1OjQ4OjQwWiIsICJpZCI6ICJwbGFjZWhvbGRlciIsICJ0ZW5hbnQiOiB7ImRlc2NyaXB0aW9uIjogbnVsbCwgImVuYWJsZWQiOiB0cnVlLCAiaWQiOiAiNzVjZjc3ODM3NGYwNGRjNWIwZGJiZGVlMDhlMmYzNTUiLCAibmFtZSI6ICJhZG1pbiJ9fSwgInNlcnZpY2VDYXRhbG9nIjogW3siZW5kcG9pbnRzIjogW3siYWRtaW5VUkwiOiAiaHR0cDovLzEyNy4wLjAuMTo4Nzc0L3YyLzc1Y2Y3NzgzNzRmMDRkYzViMGRiYmRlZTA4ZTJmMzU1IiwgInJlZ2lvbiI6ICJSZWdpb25PbmUiLCAiaW50ZXJuYWxVUkwiOiAiaHR0cDovLzEyNy4wLjAuMTo4Nzc0L3YyLzc1Y2Y3NzgzNzRmMDRkYzViMGRiYmRlZTA4ZTJmMzU1IiwgImlkIjogIjYwNGQ5YWZiOTc4ZDRjMGI4MjQ0OGFjN2Q4OTdmZjJiIiwgInB1YmxpY1VSTCI6ICJodHRwOi8vMTI3LjAuMC4xOjg3NzQvdjIvNzVjZjc3ODM3NGYwNGRjNWIwZGJiZGVlMDhlMmYzNTUifV0sICJlbmRwb2ludHNfbGlua3MiOiBbXSwgInR5cGUiOiAiY29tcHV0ZSIsICJuYW1lIjogIm5vdmEifSwgeyJlbmRwb2ludHMiOiBbeyJhZG1pblVSTCI6ICJodHRwOi8vMTI3LjAuMC4xOjk2OTYvIiwgInJlZ2lvbiI6ICJSZWdpb25PbmUiLCAiaW50ZXJuYWxVUkwiOiAiaHR0cDovLzEyNy4wLjAuMTo5Njk2LyIsICJpZCI6ICIyYjZmMTBmYjZhY2E0OTFhYTVkM2M0N2U5ODNiMDY0YiIsICJwdWJsaWNVUkwiOiAiaHR0cDovLzEyNy4wLjAuMTo5Njk2LyJ9XSwgImVuZHBvaW50c19saW5rcyI6IFtdLCAidHlwZSI6ICJuZXR3b3JrIiwgIm5hbWUiOiAicXVhbnR1bSJ9LCB7ImVuZHBvaW50cyI6IFt7ImFkbWluVVJMIjogImh0dHA6Ly8xMjcuMC4wLjE6MzMzMyIsICJyZWdpb24iOiAiUmVnaW9uT25lIiwgImludGVybmFsVVJMIjogImh0dHA6Ly8xMjcuMC4wLjE6MzMzMyIsICJpZCI6ICIwMDNiMTg5ZjU1N2E0OGNlODU3MmEzYjUzY2M4YjFmOCIsICJwdWJsaWNVUkwiOiAiaHR0cDovLzEyNy4wLjAuMTozMzMzIn1dLCAiZW5kcG9pbnRzX2xpbmtzIjogW10sICJ0eXBlIjogInMzIiwgIm5hbWUiOiAiczMifSwgeyJlbmRwb2ludHMiOiBbeyJhZG1pblVSTCI6ICJodHRwOi8vMTI3LjAuMC4xOjkyOTIiLCAicmVnaW9uIjogIlJlZ2lvbk9uZSIsICJpbnRlcm5hbFVSTCI6ICJodHRwOi8vMTI3LjAuMC4xOjkyOTIiLCAiaWQiOiAiMmE5YzdjZmFjYjVkNDMzYWJmMWFmZmYzOGFlOWZjNmMiLCAicHVibGljVVJMIjogImh0dHA6Ly8xMjcuMC4wLjE6OTI5MiJ9XSwgImVuZHBvaW50c19saW5rcyI6IFtdLCAidHlwZSI6ICJpbWFnZSIsICJuYW1lIjogImdsYW5jZSJ9LCB7ImVuZHBvaW50cyI6IFt7ImFkbWluVVJMIjogImh0dHA6Ly8xMjcuMC4wLjE6ODc3NyIsICJyZWdpb24iOiAiUmVnaW9uT25lIiwgImludGVybmFsVVJMIjogImh0dHA6Ly8xMjcuMC4wLjE6ODc3NyIsICJpZCI6ICIzNTFlZTgzZDVlMGI0NjQ4YTAwMzI0YjI4M2VhODIxMSIsICJwdWJsaWNVUkwiOiAiaHR0cDovLzEyNy4wLjAuMTo4Nzc3In1dLCAiZW5kcG9pbnRzX2xpbmtzIjogW10sICJ0eXBlIjogIm1ldGVyaW5nIiwgIm5hbWUiOiAiY2VpbG9tZXRlciJ9LCB7ImVuZHBvaW50cyI6IFt7ImFkbWluVVJMIjogImh0dHA6Ly8xMjcuMC4wLjE6ODAwMC92MSIsICJyZWdpb24iOiAiUmVnaW9uT25lIiwgImludGVybmFsVVJMIjogImh0dHA6Ly8xMjcuMC4wLjE6ODAwMC92MSIsICJpZCI6ICI2YmU3OGZhZmQ1MTU0MjEwODI4YjhkYjQ3MWVkYjI1NCIsICJwdWJsaWNVUkwiOiAiaHR0cDovLzEyNy4wLjAuMTo4MDAwL3YxIn1dLCAiZW5kcG9pbnRzX2xpbmtzIjogW10sICJ0eXBlIjogImNsb3VkZm9ybWF0aW9uIiwgIm5hbWUiOiAiaGVhdC1jZm4ifSwgeyJlbmRwb2ludHMiOiBbeyJhZG1pblVSTCI6ICJodHRwOi8vMTI3LjAuMC4xOjg3NzYvdjEvNzVjZjc3ODM3NGYwNGRjNWIwZGJiZGVlMDhlMmYzNTUiLCAicmVnaW9uIjogIlJlZ2lvbk9uZSIsICJpbnRlcm5hbFVSTCI6ICJodHRwOi8vMTI3LjAuMC4xOjg3NzYvdjEvNzVjZjc3ODM3NGYwNGRjNWIwZGJiZGVlMDhlMmYzNTUiLCAiaWQiOiAiMzU3YTBlYTc2NGUxNGFlM2ExYzZmYjIzMTgzNWZkYzMiLCAicHVibGljVVJMIjogImh0dHA6Ly8xMjcuMC4wLjE6ODc3Ni92MS83NWNmNzc4Mzc0ZjA0ZGM1YjBkYmJkZWUwOGUyZjM1NSJ9XSwgImVuZHBvaW50c19saW5rcyI6IFtdLCAidHlwZSI6ICJ2b2x1bWUiLCAibmFtZSI6ICJjaW5kZXIifSwgeyJlbmRwb2ludHMiOiBbeyJhZG1pblVSTCI6ICJodHRwOi8vMTI3LjAuMC4xOjg3NzMvc2VydmljZXMvQWRtaW4iLCAicmVnaW9uIjogIlJlZ2lvbk9uZSIsICJpbnRlcm5hbFVSTCI6ICJodHRwOi8vMTI3LjAuMC4xOjg3NzMvc2VydmljZXMvQ2xvdWQiLCAiaWQiOiAiM2VkMDk1MDBiNjAzNGE1NGI2Mjg4NzE2ZTNiN2I0MjEiLCAicHVibGljVVJMIjogImh0dHA6Ly8xMjcuMC4wLjE6ODc3My9zZXJ2aWNlcy9DbG91ZCJ9XSwgImVuZHBvaW50c19saW5rcyI6IFtdLCAidHlwZSI6ICJlYzIiLCAibmFtZSI6ICJlYzIifSwgeyJlbmRwb2ludHMiOiBbeyJhZG1pblVSTCI6ICJodHRwOi8vMTI3LjAuMC4xOjgwMDQvdjEvNzVjZjc3ODM3NGYwNGRjNWIwZGJiZGVlMDhlMmYzNTUiLCAicmVnaW9uIjogIlJlZ2lvbk9uZSIsICJpbnRlcm5hbFVSTCI6ICJodHRwOi8vMTI3LjAuMC4xOjgwMDQvdjEvNzVjZjc3ODM3NGYwNGRjNWIwZGJiZGVlMDhlMmYzNTUiLCAiaWQiOiAiMmFiNmRhZWU1ODkyNDU2Yzk0ZmVkNTM3NDU1ZmRjYjQiLCAicHVibGljVVJMIjogImh0dHA6Ly8xMjcuMC4wLjE6ODAwNC92MS83NWNmNzc4Mzc0ZjA0ZGM1YjBkYmJkZWUwOGUyZjM1NSJ9XSwgImVuZHBvaW50c19saW5rcyI6IFtdLCAidHlwZSI6ICJvcmNoZXN0cmF0aW9uIiwgIm5hbWUiOiAiaGVhdCJ9LCB7ImVuZHBvaW50cyI6IFt7ImFkbWluVVJMIjogImh0dHA6Ly8xMjcuMC4wLjE6MzUzNTcvdjIuMCIsICJyZWdpb24iOiAiUmVnaW9uT25lIiwgImludGVybmFsVVJMIjogImh0dHA6Ly8xMjcuMC4wLjE6NTAwMC92Mi4wIiwgImlkIjogIjNmZDEwZThkNGQxNDRlMzhiMzQ5MjAzNDAyZGIzNGFkIiwgInB1YmxpY1VSTCI6ICJodHRwOi8vMTI3LjAuMC4xOjUwMDAvdjIuMCJ9XSwgImVuZHBvaW50c19saW5rcyI6IFtdLCAidHlwZSI6ICJpZGVudGl0eSIsICJuYW1lIjogImtleXN0b25lIn1dLCAidXNlciI6IHsidXNlcm5hbWUiOiAiYWRtaW4iLCAicm9sZXNfbGlua3MiOiBbXSwgImlkIjogIjRhMjQzMjY1OGRkYTRjNjRiOTBmMGZhNDMzYTUxMzJiIiwgInJvbGVzIjogW3sibmFtZSI6ICJhZG1pbiJ9XSwgIm5hbWUiOiAiYWRtaW4ifSwgIm1ldGFkYXRhIjogeyJpc19hZG1pbiI6IDAsICJyb2xlcyI6IFsiOTMzYWFiN2VjMDdmNDJlNjllNzMwYjQ5NWVmMTRhMjgiXX19fTGCAYEwggF9AgEBMFwwVzELMAkGA1UEBhMCVVMxDjAMBgNVBAgTBVVuc2V0MQ4wDAYDVQQHEwVVbnNldDEOMAwGA1UEChMFVW5zZXQxGDAWBgNVBAMTD3d3dy5leGFtcGxlLmNvbQIBATAHBgUrDgMCGjANBgkqhkiG9w0BAQEFAASCAQAlcstU1ufw84Vq8gCAGpix2Ly+-Kg9K2lheSVwxqRfIQn-1NdZWIS1RNFBCuIc539WQEzWE1RIHY8jiXrllgattuktLUdYDWuxxR2NsUXe-26+Yo5v44R46uyRfluH1x8A2o+qFWgw6SjYZoRlC7pgKSnHfRnvBv6Xc9YyLMTHef+Ye0hNIOISA1q0RwUtAX8tTBrrTFtmNiTzkocgKGRw3PTFs-7oFWuBSYqoFOlHazgCNYfdZvmcJWR6HBVlDAkdZJXP5zZog4TmbQCzpz5JyXQXJ+7Z1Bzoru1PS8u6vojMLBHLCVoix3ROiwXAd5Z16Eew3Rskceu7P+cABAaj' -H 'X-Auth-Key: passw0rd' -H 'Accept: application/json' -H 'User-Agent: python-heatclient' -H 'Content-Type: application/json' -d '{"stack_name": "teststack", "disable_rollback": true, "parameters": {"DBUsername": "wp", "LinuxDistribution": "F17", "KeyName": "heat_key", "DBPassword": "verybadpassword", "InstanceType": "m1.large", "GVT": "GVTTest"}, "template": {"Description": "AWS CloudFormation Sample Template WordPress_Single_Instance: WordPress is web software you can use to create a beautiful website or blog. This template installs a single-instance WordPress deployment using a local MySQL database to store the data.", "Parameters": {"DBUsername": {"ConstraintDescription": "must begin with a letter and contain only alphanumeric characters.", "Description": "The WordPress database admin account username", "Default": "admin", "MinLength": "1", "AllowedPattern": "[a-zA-Z][a-zA-Z0-9]*", "NoEcho": "true", "MaxLength": "16", "Type": "String"}, "LinuxDistribution": {"Default": "F17", "Type": "String", "Description": "Distribution of choice", "AllowedValues": ["F18", "F17", "U10", "RHEL-6.1", "RHEL-6.2", "RHEL-6.3"]}, "DBRootPassword": {"ConstraintDescription": "must contain only alphanumeric characters.", "Description": "Root password for MySQL", "Default": "admin", "MinLength": "1", "AllowedPattern": "[a-zA-Z0-9]*", "NoEcho": "true", "MaxLength": "41", "Type": "String"}, "KeyName": {"Type": "String", "Description": "Name of an existing EC2 KeyPair to enable SSH access to the instances"}, "DBName": {"ConstraintDescription": "must begin with a letter and contain only alphanumeric characters.", "Description": "The WordPress database name", "Default": "wordpress", "MinLength": "1", "AllowedPattern": "[a-zA-Z][a-zA-Z0-9]*", "MaxLength": "64", "Type": "String"}, "DBPassword": {"ConstraintDescription": "must contain only alphanumeric characters.", "Description": "The WordPress database admin account password", "Default": "admin", "MinLength": "1", "AllowedPattern": "[a-zA-Z0-9]*", "NoEcho": "true", "MaxLength": "41", "Type": "String"}, "InstanceType": {"Default": "m1.large", "ConstraintDescription": "must be a valid EC2 instance type.", "Type": "String", "Description": "WebServer EC2 instance type", "AllowedValues": ["t1.micro", "m1.small", "m1.large", "m1.xlarge", "m2.xlarge", "m2.2xlarge", "m2.4xlarge", "c1.medium", "c1.xlarge", "cc1.4xlarge"]}}, "AWSTemplateFormatVersion": "2010-09-09", "Outputs": {"WebsiteURL": {"Description": "URL for Wordpress wiki", "Value": {"Fn::Join": ["", ["http://", {"Fn::GetAtt": ["WikiDatabase", "PublicIp"]}, "/wordpress"]]}}}, "Resources": {"WikiDatabase": {"Type": "AWS::EC2::Instance", "Properties": {"UserData": {"Fn::Base64": {"Fn::Join": ["", ["#!/bin/bash -v\n", "/opt/aws/bin/cfn-init\n", "# Setup MySQL root password and create a user\n", "mysqladmin -u root password '", {"Ref": "DBRootPassword"}, "'\n", "cat << EOF | mysql -u root --password='", {"Ref": "DBRootPassword"}, "'\n", "CREATE DATABASE ", {"Ref": "DBName"}, ";\n", "GRANT ALL PRIVILEGES ON ", {"Ref": "DBName"}, ".* TO \"", {"Ref": "DBUsername"}, "\"@\"localhost\"\n", "IDENTIFIED BY \"", {"Ref": "DBPassword"}, "\";\n", "FLUSH PRIVILEGES;\n", "EXIT\n", "EOF\n", "sed -i \"/Deny from All/d\" /etc/httpd/conf.d/wordpress.conf\n", "sed -i \"s/Require local/Require all granted/\" /etc/httpd/conf.d/wordpress.conf\n", "sed --in-place --e s/database_name_here/", {"Ref": "DBName"}, "/ --e s/username_here/", {"Ref": "DBUsername"}, "/ --e s/password_here/", {"Ref": "DBPassword"}, "/ /usr/share/wordpress/wp-config.php\n", "systemctl restart httpd.service\n"]]}}, "KeyName": {"Ref": "KeyName"}, "InstanceType": {"Ref": "InstanceType"}, "ImageId": {"Fn::FindInMap": ["DistroArch2AMI", {"Ref": "LinuxDistribution"}, {"Fn::FindInMap": ["AWSInstanceType2Arch", {"Ref": "InstanceType"}, "Arch"]}]}}, "Metadata": {"AWS::CloudFormation::Init": {"config": {"services": {"systemd": {"httpd": {"ensureRunning": "true", "enabled": "true"}, "mysqld": {"ensureRunning": "true", "enabled": "true"}}}, "packages": {"yum": {"httpd": [], "wordpress": [], "mysql-server": [], "mysql": []}}}}}}}, "Mappings": {"DistroArch2AMI": {"RHEL-6.2": {"32": "rhel62-i386-cfntools", "64": "rhel62-x86_64-cfntools"}, "RHEL-6.3": {"32": "rhel63-i386-cfntools", "64": "rhel63-x86_64-cfntools"}, "RHEL-6.1": {"32": "rhel61-i386-cfntools", "64": "rhel61-x86_64-cfntools"}, "F18": {"32": "F18-i386-cfntools", "64": "F18-x86_64-cfntools"}, "U10": {"32": "U10-i386-cfntools", "64": "U10-x86_64-cfntools"}, "F17": {"32": "F17-i386-cfntools", "64": "F17-x86_64-cfntools"}}, "AWSInstanceType2Arch": {"m1.large": {"Arch": "64"}, "m2.2xlarge": {"Arch": "64"}, "m1.small": {"Arch": "32"}, "c1.medium": {"Arch": "32"}, "m1.xlarge": {"Arch": "64"}, "m2.xlarge": {"Arch": "64"}, "t1.micro": {"Arch": "32"}, "m2.4xlarge": {"Arch": "64"}, "c1.xlarge": {"Arch": "64"}, "cc1.4xlarge": {"Arch": "64"}}}}, "timeout_mins": 60}' http://127.0.0.1:8004/v1/75cf778374f04dc5b0dbbdee08e2f355/stacks
DEBUG (http:121)
HTTP/1.1 500 Internal Server Error
date: Wed, 10 Jul 2013 05:48:41 GMT
content-length: 3219
content-type: text/plain
connection: close

Traceback (most recent call last):
  File "/usr/local/lib/python2.7/dist-packages/eventlet/wsgi.py", line 383, in handle_one_response
    result = self.application(self.environ, start_response)
  File "/usr/local/lib/python2.7/dist-packages/webob/dec.py", line 130, in __call__
    resp = self.call_func(req, *args, **self.kwargs)
  File "/usr/local/lib/python2.7/dist-packages/webob/dec.py", line 195, in call_func
    return self.func(req, *args, **kwargs)
  File "/home/yanglei/installed_openstack_devstack/heat/heat/common/wsgi.py", line 306, in __call__
    response = req.get_response(self.application)
  File "/usr/local/lib/python2.7/dist-packages/webob/request.py", line 1296, in send
    application, catch_exc_info=False)
  File "/usr/local/lib/python2.7/dist-packages/webob/request.py", line 1260, in call_application
    app_iter = application(self.environ, start_response)
  File "/home/yanglei/installed_openstack_devstack/python-keystoneclient/keystoneclient/middleware/auth_token.py", line 463, in __call__
    return self.app(env, start_response)
  File "/usr/local/lib/python2.7/dist-packages/webob/dec.py", line 130, in __call__
    resp = self.call_func(req, *args, **self.kwargs)
  File "/usr/local/lib/python2.7/dist-packages/webob/dec.py", line 195, in call_func
    return self.func(req, *args, **kwargs)
  File "/home/yanglei/installed_openstack_devstack/heat/heat/common/wsgi.py", line 306, in __call__
    response = req.get_response(self.application)
  File "/usr/local/lib/python2.7/dist-packages/webob/request.py", line 1296, in send
    application, catch_exc_info=False)
  File "/usr/local/lib/python2.7/dist-packages/webob/request.py", line 1260, in call_application
    app_iter = application(self.environ, start_response)
  File "/usr/local/lib/python2.7/dist-packages/webob/dec.py", line 144, in __call__
    return resp(environ, start_response)
  File "/usr/lib/python2.7/dist-packages/routes/middleware.py", line 131, in __call__
    response = self.app(environ, start_response)
  File "/usr/local/lib/python2.7/dist-packages/webob/dec.py", line 144, in __call__
    return resp(environ, start_response)
  File "/usr/local/lib/python2.7/dist-packages/webob/dec.py", line 130, in __call__
    resp = self.call_func(req, *args, **self.kwargs)
  File "/usr/local/lib/python2.7/dist-packages/webob/dec.py", line 195, in call_func
    return self.func(req, *args, **kwargs)
  File "/home/yanglei/installed_openstack_devstack/heat/heat/common/wsgi.py", line 565, in __call__
    request, **action_args)
  File "/home/yanglei/installed_openstack_devstack/heat/heat/common/wsgi.py", line 610, in dispatch
    return method(*args, **kwargs)
  File "/home/yanglei/installed_openstack_devstack/heat/heat/api/openstack/v1/util.py", line 30, in handle_stack_method
    return handler(controller, req, **kwargs)
  File "/home/yanglei/installed_openstack_devstack/heat/heat/api/openstack/v1/stacks.py", line 224, in create
    return util.remote_error(ex)
  File "/home/yanglei/installed_openstack_devstack/heat/heat/api/openstack/v1/util.py", line 90, in remote_error
    raise Exc(str(ex))
UnicodeEncodeError: 'ascii' codec can't encode characters in position 35-36: ordinal not in range(128)

Revision history for this message
YangLei (yanglyy) wrote :

There are too many "str(" in heat project.
It seems as if heat need to encode/decode like other core projects doing.
per https://wiki.openstack.org/wiki/Encoding

Changed in heat:
status: New → Triaged
importance: Undecided → Low
Changed in heat:
assignee: nobody → Nikunj Aggarwal (nikunj2512)
Thomas Herve (therve)
Changed in heat:
status: Triaged → Invalid
To post a comment you must log in.
This report contains Public information  
Everyone can see this information.

Other bug subscribers

Remote bug watches

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