)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":6456,"name":"Sahdev Zala","email":"spzala@us.ibm.com","username":"spzala"},"change_message_id":"42c274b4e0334af0e7eda101f1c9e853576be48c","unresolved":false,"context_lines":[{"line_number":12,"context_line":"If someone needs to access to the Parameters section of a template, now"},{"line_number":13,"context_line":"can use the parameters() method of Template/HOTemplate classes. In order"},{"line_number":14,"context_line":"to enforce this as the only way of doing it, if the Parameters section"},{"line_number":15,"context_line":"is access using the template as a dictionary an exception is raised."},{"line_number":16,"context_line":""},{"line_number":17,"context_line":"Change-Id: Ia60b4d2393370b12bf2681b0985ce1cd6e91ac1a"},{"line_number":18,"context_line":"Implements: blueprint native-pseudo-params"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"AAAAUH%2F%2Bu70%3D","line":15,"updated":"2014-01-22 17:40:25.000000000","message":"just for knowledge, if you can briefly explain why this enforcement (i.e. not allowing parameters access directly ) is needed, that will be good to know.","commit_id":"874de7597e2f495cf062f639446948e61b5b74aa"},{"author":{"_account_id":4257,"name":"Zane Bitter","email":"zbitter@redhat.com","username":"zaneb"},"change_message_id":"3d588e80182adec1507260402581f1bc3e228991","unresolved":false,"context_lines":[{"line_number":12,"context_line":"If someone needs to access to the Parameters section of a template, now"},{"line_number":13,"context_line":"can use the parameters() method of Template/HOTemplate classes. In order"},{"line_number":14,"context_line":"to enforce this as the only way of doing it, if the Parameters section"},{"line_number":15,"context_line":"is access using the template as a dictionary an exception is raised."},{"line_number":16,"context_line":""},{"line_number":17,"context_line":"Change-Id: Ia60b4d2393370b12bf2681b0985ce1cd6e91ac1a"},{"line_number":18,"context_line":"Implements: blueprint native-pseudo-params"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"AAAAUH%2F%2BtPc%3D","line":15,"in_reply_to":"AAAAUH%2F%2Bu70%3D","updated":"2014-01-22 23:59:24.000000000","message":"I\u0027m not sure if you\u0027re asking, or just want it noted for the record? The reason is that accessing the template directly is not portable across template formats, and now there is no reason to do it, so we explicitly prohibit it.","commit_id":"874de7597e2f495cf062f639446948e61b5b74aa"}],"heat/engine/hot.py":[{"author":{"_account_id":6456,"name":"Sahdev Zala","email":"spzala@us.ibm.com","username":"spzala"},"change_message_id":"42c274b4e0334af0e7eda101f1c9e853576be48c","unresolved":false,"context_lines":[{"line_number":61,"context_line":"            raise KeyError(_(\u0027\"%s\" is not a valid template section\u0027) % section)"},{"line_number":62,"context_line":"        if section in self.SECTIONS_NO_DIRECT_ACCESS:"},{"line_number":63,"context_line":"            raise KeyError("},{"line_number":64,"context_line":"                _(\u0027You can not access \"%s\" section directly\u0027) % section)"},{"line_number":65,"context_line":""},{"line_number":66,"context_line":"        if section \u003d\u003d self.VERSION:"},{"line_number":67,"context_line":"            return self.t[section]"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAUH%2F%2Bu90%3D","line":64,"updated":"2014-01-22 17:40:25.000000000","message":"Suggest rewriting message something like \"Section %s can not be accessed directly.\". Messages with pronouns is usually not preferred.","commit_id":"874de7597e2f495cf062f639446948e61b5b74aa"},{"author":{"_account_id":4257,"name":"Zane Bitter","email":"zbitter@redhat.com","username":"zaneb"},"change_message_id":"3d588e80182adec1507260402581f1bc3e228991","unresolved":false,"context_lines":[{"line_number":61,"context_line":"            raise KeyError(_(\u0027\"%s\" is not a valid template section\u0027) % section)"},{"line_number":62,"context_line":"        if section in self.SECTIONS_NO_DIRECT_ACCESS:"},{"line_number":63,"context_line":"            raise KeyError("},{"line_number":64,"context_line":"                _(\u0027You can not access \"%s\" section directly\u0027) % section)"},{"line_number":65,"context_line":""},{"line_number":66,"context_line":"        if section \u003d\u003d self.VERSION:"},{"line_number":67,"context_line":"            return self.t[section]"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAUH%2F%2BtP8%3D","line":64,"in_reply_to":"AAAAUH%2F%2Bu90%3D","updated":"2014-01-22 23:59:24.000000000","message":"I agree that\u0027s better, although we are probably going overboard by even worrying about translations and the like here. This should never fail except in the unit tests if somebody tries to use the template in a way that has been deprecated.\n\nI\u0027m actually starting to think that rather than raise KeyError we could just use an assert here:\n\n  assert section not in self.SECTIONS_NO_DIRECT_ACCESS","commit_id":"874de7597e2f495cf062f639446948e61b5b74aa"}],"heat/engine/template.py":[{"author":{"_account_id":6456,"name":"Sahdev Zala","email":"spzala@us.ibm.com","username":"spzala"},"change_message_id":"42c274b4e0334af0e7eda101f1c9e853576be48c","unresolved":false,"context_lines":[{"line_number":73,"context_line":"            raise KeyError(_(\u0027\"%s\" is not a valid template section\u0027) % section)"},{"line_number":74,"context_line":"        if section in self.SECTIONS_NO_DIRECT_ACCESS:"},{"line_number":75,"context_line":"            raise KeyError("},{"line_number":76,"context_line":"                _(\u0027You can not access \"%s\" section directly\u0027) % section)"},{"line_number":77,"context_line":""},{"line_number":78,"context_line":"        if section \u003d\u003d self.VERSION:"},{"line_number":79,"context_line":"            return self.t[section]"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAUH%2F%2Bu9g%3D","line":76,"updated":"2014-01-22 17:40:25.000000000","message":"Suggest rewriting message something like \"Section %s can not be accessed directly.\". Messages with pronouns is usually not preferred.","commit_id":"874de7597e2f495cf062f639446948e61b5b74aa"}],"heat/tests/test_engine_service.py":[{"author":{"_account_id":6456,"name":"Sahdev Zala","email":"spzala@us.ibm.com","username":"spzala"},"change_message_id":"289a061d85983d68f67db5057ccf2ef951c8b2cd","unresolved":false,"context_lines":[{"line_number":544,"context_line":"        stack \u003d get_wordpress_stack(stack_name, self.ctx)"},{"line_number":545,"context_line":"        setup_mocks(self.m, stack)"},{"line_number":546,"context_line":""},{"line_number":547,"context_line":"        template \u003d dict(stack.t)"},{"line_number":548,"context_line":"        template[\u0027Parameters\u0027][\u0027KeyName\u0027][\u0027Default\u0027] \u003d \u0027test\u0027"},{"line_number":549,"context_line":"        resource \u003d stack[\u0027WebServer\u0027]"},{"line_number":550,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAUH%2F%2BspM%3D","side":"PARENT","line":547,"updated":"2014-01-23 02:31:19.000000000","message":"Wondering here and the other test file you have modified, don\u0027t we need to test with the new way of accessing parameter? i.e. using the parameters()  method. Is it taken care some?","commit_id":"a3f44c212164a4d6005dfd2cf10aed70e5c963c8"}],"heat/tests/test_hot.py":[{"author":{"_account_id":4257,"name":"Zane Bitter","email":"zbitter@redhat.com","username":"zaneb"},"change_message_id":"c3efdd43fc5202fa8b8fb9eda5047368a3814786","unresolved":false,"context_lines":[{"line_number":202,"context_line":"        \u0027\u0027\u0027)"},{"line_number":203,"context_line":""},{"line_number":204,"context_line":"        tmpl \u003d parser.Template(hot_tpl)"},{"line_number":205,"context_line":"        self.assertRaises(KeyError, tmpl.__getitem__, \u0027parameters\u0027)"},{"line_number":206,"context_line":""},{"line_number":207,"context_line":"    def test_parameters_section_not_iterable(self):"},{"line_number":208,"context_line":"        \"\"\""}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAAUH%2F%2BPCU%3D","line":205,"updated":"2014-01-28 20:29:25.000000000","message":"This should have a capital \u0027P\u0027 in \u0027Parameters\u0027.","commit_id":"b4924bb6d8ee33722712f206ade96ce1f6dd7d67"},{"author":{"_account_id":9331,"name":"Pablo Andres Fuente","email":"pablo.andres.fuente@gmail.com","username":"pafuent"},"change_message_id":"bba9316d79747ee884b7eebce791cbf3059653cc","unresolved":false,"context_lines":[{"line_number":202,"context_line":"        \u0027\u0027\u0027)"},{"line_number":203,"context_line":""},{"line_number":204,"context_line":"        tmpl \u003d parser.Template(hot_tpl)"},{"line_number":205,"context_line":"        self.assertRaises(KeyError, tmpl.__getitem__, \u0027parameters\u0027)"},{"line_number":206,"context_line":""},{"line_number":207,"context_line":"    def test_parameters_section_not_iterable(self):"},{"line_number":208,"context_line":"        \"\"\""}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAAUH%2F%2BNGA%3D","line":205,"in_reply_to":"AAAAUH%2F%2BPCU%3D","updated":"2014-01-29 13:20:47.000000000","message":"It\u0027s right, but I must test \u0027P\u0027 and \u0027p\u0027 to test all the possibilities.","commit_id":"b4924bb6d8ee33722712f206ade96ce1f6dd7d67"},{"author":{"_account_id":4257,"name":"Zane Bitter","email":"zbitter@redhat.com","username":"zaneb"},"change_message_id":"c3efdd43fc5202fa8b8fb9eda5047368a3814786","unresolved":false,"context_lines":[{"line_number":210,"context_line":"        used as an iterable."},{"line_number":211,"context_line":"        \"\"\""},{"line_number":212,"context_line":"        tmpl \u003d parser.Template({\u0027heat_template_version\u0027: \u00272013-05-23\u0027,"},{"line_number":213,"context_line":"                                \u0027Parameters\u0027:"},{"line_number":214,"context_line":"                                {\u0027foo\u0027: {\u0027Type\u0027: \u0027String\u0027, \u0027Required\u0027: True}}})"},{"line_number":215,"context_line":"        self.assertNotIn(\u0027Parameters\u0027, tmpl.items())"},{"line_number":216,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAAUH%2F%2BPCA%3D","line":213,"updated":"2014-01-28 20:29:25.000000000","message":"This should have a lower-case \u0027p\u0027 in \u0027parameters\u0027.","commit_id":"b4924bb6d8ee33722712f206ade96ce1f6dd7d67"},{"author":{"_account_id":9331,"name":"Pablo Andres Fuente","email":"pablo.andres.fuente@gmail.com","username":"pafuent"},"change_message_id":"bba9316d79747ee884b7eebce791cbf3059653cc","unresolved":false,"context_lines":[{"line_number":210,"context_line":"        used as an iterable."},{"line_number":211,"context_line":"        \"\"\""},{"line_number":212,"context_line":"        tmpl \u003d parser.Template({\u0027heat_template_version\u0027: \u00272013-05-23\u0027,"},{"line_number":213,"context_line":"                                \u0027Parameters\u0027:"},{"line_number":214,"context_line":"                                {\u0027foo\u0027: {\u0027Type\u0027: \u0027String\u0027, \u0027Required\u0027: True}}})"},{"line_number":215,"context_line":"        self.assertNotIn(\u0027Parameters\u0027, tmpl.items())"},{"line_number":216,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAAUH%2F%2BNFw%3D","line":213,"in_reply_to":"AAAAUH%2F%2BPCA%3D","updated":"2014-01-29 13:20:47.000000000","message":"Done","commit_id":"b4924bb6d8ee33722712f206ade96ce1f6dd7d67"},{"author":{"_account_id":4257,"name":"Zane Bitter","email":"zbitter@redhat.com","username":"zaneb"},"change_message_id":"c3efdd43fc5202fa8b8fb9eda5047368a3814786","unresolved":false,"context_lines":[{"line_number":212,"context_line":"        tmpl \u003d parser.Template({\u0027heat_template_version\u0027: \u00272013-05-23\u0027,"},{"line_number":213,"context_line":"                                \u0027Parameters\u0027:"},{"line_number":214,"context_line":"                                {\u0027foo\u0027: {\u0027Type\u0027: \u0027String\u0027, \u0027Required\u0027: True}}})"},{"line_number":215,"context_line":"        self.assertNotIn(\u0027Parameters\u0027, tmpl.items())"},{"line_number":216,"context_line":""},{"line_number":217,"context_line":""},{"line_number":218,"context_line":"class StackTest(test_parser.StackTest):"}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAAUH%2F%2BPBw%3D","line":215,"updated":"2014-01-28 20:29:25.000000000","message":"tmpl.items() returns a list of (key, value) tuples, so it goes without saying that the string \u0027Parameters\u0027 will not be found. You probably want to check in tmpl.keys().","commit_id":"b4924bb6d8ee33722712f206ade96ce1f6dd7d67"},{"author":{"_account_id":9331,"name":"Pablo Andres Fuente","email":"pablo.andres.fuente@gmail.com","username":"pafuent"},"change_message_id":"bba9316d79747ee884b7eebce791cbf3059653cc","unresolved":false,"context_lines":[{"line_number":212,"context_line":"        tmpl \u003d parser.Template({\u0027heat_template_version\u0027: \u00272013-05-23\u0027,"},{"line_number":213,"context_line":"                                \u0027Parameters\u0027:"},{"line_number":214,"context_line":"                                {\u0027foo\u0027: {\u0027Type\u0027: \u0027String\u0027, \u0027Required\u0027: True}}})"},{"line_number":215,"context_line":"        self.assertNotIn(\u0027Parameters\u0027, tmpl.items())"},{"line_number":216,"context_line":""},{"line_number":217,"context_line":""},{"line_number":218,"context_line":"class StackTest(test_parser.StackTest):"}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAAUH%2F%2BNF0%3D","line":215,"in_reply_to":"AAAAUH%2F%2BPBw%3D","updated":"2014-01-29 13:20:47.000000000","message":"Done","commit_id":"b4924bb6d8ee33722712f206ade96ce1f6dd7d67"}],"heat/tests/test_parser.py":[{"author":{"_account_id":4257,"name":"Zane Bitter","email":"zbitter@redhat.com","username":"zaneb"},"change_message_id":"c3efdd43fc5202fa8b8fb9eda5047368a3814786","unresolved":false,"context_lines":[{"line_number":449,"context_line":"        tmpl \u003d parser.Template({\u0027AWSTemplateFormatVersion\u0027: \u0027\u0027,"},{"line_number":450,"context_line":"                                \u0027Parameters\u0027:"},{"line_number":451,"context_line":"                                {\u0027foo\u0027: {\u0027Type\u0027: \u0027String\u0027, \u0027Required\u0027: True}}})"},{"line_number":452,"context_line":"        self.assertNotIn(\u0027Parameters\u0027, tmpl.items())"},{"line_number":453,"context_line":""},{"line_number":454,"context_line":""},{"line_number":455,"context_line":"class TemplateFnErrorTest(HeatTestCase):"}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAAUH%2F%2BPAM%3D","line":452,"updated":"2014-01-28 20:29:25.000000000","message":"Same issue - tmpl.items() returns a list of (key, value) tuples, so it goes without saying that the string \u0027Parameters\u0027 will not be found. You probably want to check in tmpl.keys().","commit_id":"b4924bb6d8ee33722712f206ade96ce1f6dd7d67"},{"author":{"_account_id":9331,"name":"Pablo Andres Fuente","email":"pablo.andres.fuente@gmail.com","username":"pafuent"},"change_message_id":"bba9316d79747ee884b7eebce791cbf3059653cc","unresolved":false,"context_lines":[{"line_number":449,"context_line":"        tmpl \u003d parser.Template({\u0027AWSTemplateFormatVersion\u0027: \u0027\u0027,"},{"line_number":450,"context_line":"                                \u0027Parameters\u0027:"},{"line_number":451,"context_line":"                                {\u0027foo\u0027: {\u0027Type\u0027: \u0027String\u0027, \u0027Required\u0027: True}}})"},{"line_number":452,"context_line":"        self.assertNotIn(\u0027Parameters\u0027, tmpl.items())"},{"line_number":453,"context_line":""},{"line_number":454,"context_line":""},{"line_number":455,"context_line":"class TemplateFnErrorTest(HeatTestCase):"}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAAUH%2F%2BNFo%3D","line":452,"in_reply_to":"AAAAUH%2F%2BPAM%3D","updated":"2014-01-29 13:20:47.000000000","message":"Done","commit_id":"b4924bb6d8ee33722712f206ade96ce1f6dd7d67"}]}
