Merge "Fixes JSON to YAML conversion bug"

This commit is contained in:
Jenkins 2015-07-01 11:00:53 +00:00 committed by Gerrit Code Review
commit abc73c485f
3 changed files with 20 additions and 2 deletions

View File

@ -108,7 +108,7 @@ def convert_json_to_yaml(json_str):
next(key_order),
matchobj.group(2))
return key
key_re = re.compile('^(\s*)"([^"]+)"\s*:', re.M)
key_re = re.compile('(\s*)"([^"]+)"\s*:')
json_str = key_re.sub(order_key, json_str)
# parse the string as json to a python structure
@ -120,4 +120,7 @@ def convert_json_to_yaml(json_str):
# remove ordering from key names
yml = re.sub('__\d*__order__', '', yml)
# convert integer keys back to string
yml = re.sub('([\s,{])(\d+)(\s*):', r"\1'\2'\3:", yml)
return yml

View File

@ -82,7 +82,10 @@
"cc1.4xlarge" : { "Arch" : "64" }
},
"DistroArch2AMI": {
"F18" : { "32" : "F18-i386-cfntools", "64" : "F18-x86_64-cfntools" },
"F18" : {
"32" : "F18-i386-cfntools",
"64" : "F18-x86_64-cfntools"
},
"F17" : { "32" : "F17-i386-cfntools", "64" : "F17-x86_64-cfntools" },
"U10" : { "32" : "U10-i386-cfntools", "64" : "U10-x86_64-cfntools" },
"RHEL-6.1" : { "32" : "rhel61-i386-cfntools", "64" : "rhel61-x86_64-cfntools" },

View File

@ -14,6 +14,7 @@
import os
import mock
import re
import six
import yaml
@ -75,6 +76,17 @@ class JsonToYamlTest(common.HeatTestCase):
yml_str = template_format.convert_json_to_yaml(json_str)
yield (json_str, yml_str, f.name)
def test_integer_only_keys_get_translated_correctly(self):
path = os.path.join(os.path.dirname(os.path.realpath(__file__)),
'templates/WordPress_Single_Instance.template')
with open(path, 'r') as f:
json_str = f.read()
yml_str = template_format.convert_json_to_yaml(json_str)
match = re.search('[\s,{]\d+\s*:', yml_str)
# Check that there are no matches of integer-only keys
# lacking explicit quotes
self.assertEqual(match, None)
class YamlMinimalTest(common.HeatTestCase):