)]}'
{"heat/common/exception.py":[{"author":{"_account_id":4257,"name":"Zane Bitter","email":"zbitter@redhat.com","username":"zaneb"},"change_message_id":"8a6489c63f53d15f254ef11caada7026a56ecbdf","unresolved":false,"context_lines":[{"line_number":241,"context_line":"    msg_fmt \u003d _(\"%(message)s\")"},{"line_number":242,"context_line":""},{"line_number":243,"context_line":""},{"line_number":244,"context_line":"class InvalidStackIdentifier(HeatException):"},{"line_number":245,"context_line":"    msg_fmt \u003d _(\"Invalid stack identifier provided.\")"},{"line_number":246,"context_line":""},{"line_number":247,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAUH%2F%2BVq0%3D","line":244,"updated":"2014-01-27 22:17:21.000000000","message":"I don\u0027t think this really belongs in heat.common.exception - this file is for exceptions that can be thrown by the engine and are handled by the api process. This exception is just used for flow control between two functions. I\u0027m not sure it\u0027s even needed, but if it is then it should just be defined in heat/engine/parameters.py","commit_id":"f4db27329cd84238882a85a14bcfa0300b209e16"},{"author":{"_account_id":9331,"name":"Pablo Andres Fuente","email":"pablo.andres.fuente@gmail.com","username":"pafuent"},"change_message_id":"9df715c78cc369553cea1e98b6a471eb8fe3b306","unresolved":false,"context_lines":[{"line_number":241,"context_line":"    msg_fmt \u003d _(\"%(message)s\")"},{"line_number":242,"context_line":""},{"line_number":243,"context_line":""},{"line_number":244,"context_line":"class InvalidStackIdentifier(HeatException):"},{"line_number":245,"context_line":"    msg_fmt \u003d _(\"Invalid stack identifier provided.\")"},{"line_number":246,"context_line":""},{"line_number":247,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAUH%2F%2BRnw%3D","line":244,"in_reply_to":"AAAAUH%2F%2BVq0%3D","updated":"2014-01-28 15:26:49.000000000","message":"Done","commit_id":"f4db27329cd84238882a85a14bcfa0300b209e16"}],"heat/engine/hot.py":[{"author":{"_account_id":4257,"name":"Zane Bitter","email":"zbitter@redhat.com","username":"zaneb"},"change_message_id":"5d4e05032dd492b6ec932019882e5bac73266796","unresolved":false,"context_lines":[{"line_number":311,"context_line":"        Set the StackId pseudo parameter value"},{"line_number":312,"context_line":"        \u0027\u0027\u0027"},{"line_number":313,"context_line":"        if stack_identifier is not None:"},{"line_number":314,"context_line":"            self.params[\u0027AWS::StackId\u0027].schema.set_default("},{"line_number":315,"context_line":"                stack_identifier.stack_id)"},{"line_number":316,"context_line":"        else:"},{"line_number":317,"context_line":"            raise exception.InvalidStackIdentifier()"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAUH%2F%2Byvk%3D","line":314,"updated":"2014-01-22 03:40:54.000000000","message":"I don\u0027t think there\u0027s any point adding this until the next patch, when you also change the name. At the moment AWS::StackId always means the ARN, so it doesn\u0027t make sense to change its meaning and then remove \u0026 replace it. Better to just remove \u0026 replace it in one step.\n\nSo all of the changes in this file could be deferred to the next patch.","commit_id":"c739e7be47f40f1857c88488f8967599d7ea10ae"},{"author":{"_account_id":9331,"name":"Pablo Andres Fuente","email":"pablo.andres.fuente@gmail.com","username":"pafuent"},"change_message_id":"0f7e69352c605d1b9a63d1c9023ee206d4a8455f","unresolved":false,"context_lines":[{"line_number":311,"context_line":"        Set the StackId pseudo parameter value"},{"line_number":312,"context_line":"        \u0027\u0027\u0027"},{"line_number":313,"context_line":"        if stack_identifier is not None:"},{"line_number":314,"context_line":"            self.params[\u0027AWS::StackId\u0027].schema.set_default("},{"line_number":315,"context_line":"                stack_identifier.stack_id)"},{"line_number":316,"context_line":"        else:"},{"line_number":317,"context_line":"            raise exception.InvalidStackIdentifier()"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAUH%2F%2BwVo%3D","line":314,"in_reply_to":"AAAAUH%2F%2Byvk%3D","updated":"2014-01-22 14:22:25.000000000","message":"Done","commit_id":"c739e7be47f40f1857c88488f8967599d7ea10ae"}],"heat/engine/parameters.py":[{"author":{"_account_id":4257,"name":"Zane Bitter","email":"zbitter@redhat.com","username":"zaneb"},"change_message_id":"5d4e05032dd492b6ec932019882e5bac73266796","unresolved":false,"context_lines":[{"line_number":337,"context_line":"        template, optionally setting the user-supplied parameter values."},{"line_number":338,"context_line":"        \u0027\u0027\u0027"},{"line_number":339,"context_line":"        def parameters():"},{"line_number":340,"context_line":"            stack_id \u003d getattr(stack_identifier, \u0027stack_id\u0027, \u0027\u0027)"},{"line_number":341,"context_line":"            stack_name \u003d getattr(stack_identifier, \u0027stack_name\u0027, \u0027\u0027)"},{"line_number":342,"context_line":""},{"line_number":343,"context_line":"            yield Parameter(PARAM_STACK_ID,"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAUH%2F%2By0I%3D","line":340,"updated":"2014-01-22 03:40:54.000000000","message":"This looks strange, is it to support passing None as the identifier? It\u0027s probably better to check for None explicitly.\n\nIn any event, to avoid changing behaviour here this should be:\n\n  stack_id \u003d stack_identifier.arn() if stack_identifier is not None else \u0027None\u0027\n\nor\n\n  stack_id \u003d str(stack_identifier and stack_identifier.arn())","commit_id":"c739e7be47f40f1857c88488f8967599d7ea10ae"},{"author":{"_account_id":9331,"name":"Pablo Andres Fuente","email":"pablo.andres.fuente@gmail.com","username":"pafuent"},"change_message_id":"0f7e69352c605d1b9a63d1c9023ee206d4a8455f","unresolved":false,"context_lines":[{"line_number":337,"context_line":"        template, optionally setting the user-supplied parameter values."},{"line_number":338,"context_line":"        \u0027\u0027\u0027"},{"line_number":339,"context_line":"        def parameters():"},{"line_number":340,"context_line":"            stack_id \u003d getattr(stack_identifier, \u0027stack_id\u0027, \u0027\u0027)"},{"line_number":341,"context_line":"            stack_name \u003d getattr(stack_identifier, \u0027stack_name\u0027, \u0027\u0027)"},{"line_number":342,"context_line":""},{"line_number":343,"context_line":"            yield Parameter(PARAM_STACK_ID,"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAUH%2F%2BwVM%3D","line":340,"in_reply_to":"AAAAUH%2F%2By0I%3D","updated":"2014-01-22 14:22:25.000000000","message":"Yes, it was to support None as identifier.\nI\u0027ll change it.","commit_id":"c739e7be47f40f1857c88488f8967599d7ea10ae"},{"author":{"_account_id":4257,"name":"Zane Bitter","email":"zbitter@redhat.com","username":"zaneb"},"change_message_id":"5d4e05032dd492b6ec932019882e5bac73266796","unresolved":false,"context_lines":[{"line_number":338,"context_line":"        \u0027\u0027\u0027"},{"line_number":339,"context_line":"        def parameters():"},{"line_number":340,"context_line":"            stack_id \u003d getattr(stack_identifier, \u0027stack_id\u0027, \u0027\u0027)"},{"line_number":341,"context_line":"            stack_name \u003d getattr(stack_identifier, \u0027stack_name\u0027, \u0027\u0027)"},{"line_number":342,"context_line":""},{"line_number":343,"context_line":"            yield Parameter(PARAM_STACK_ID,"},{"line_number":344,"context_line":"                            Schema(Schema.STRING, _(\u0027Stack ID\u0027),"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAUH%2F%2Byv4%3D","line":341,"updated":"2014-01-22 03:40:54.000000000","message":"Similarly, this should be something like:\n\n  stack_name \u003d stack_identifier and stack_identifier.name","commit_id":"c739e7be47f40f1857c88488f8967599d7ea10ae"},{"author":{"_account_id":9331,"name":"Pablo Andres Fuente","email":"pablo.andres.fuente@gmail.com","username":"pafuent"},"change_message_id":"0f7e69352c605d1b9a63d1c9023ee206d4a8455f","unresolved":false,"context_lines":[{"line_number":338,"context_line":"        \u0027\u0027\u0027"},{"line_number":339,"context_line":"        def parameters():"},{"line_number":340,"context_line":"            stack_id \u003d getattr(stack_identifier, \u0027stack_id\u0027, \u0027\u0027)"},{"line_number":341,"context_line":"            stack_name \u003d getattr(stack_identifier, \u0027stack_name\u0027, \u0027\u0027)"},{"line_number":342,"context_line":""},{"line_number":343,"context_line":"            yield Parameter(PARAM_STACK_ID,"},{"line_number":344,"context_line":"                            Schema(Schema.STRING, _(\u0027Stack ID\u0027),"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAUH%2F%2BwLE%3D","line":341,"in_reply_to":"AAAAUH%2F%2Byv4%3D","updated":"2014-01-22 14:22:25.000000000","message":"Done","commit_id":"c739e7be47f40f1857c88488f8967599d7ea10ae"},{"author":{"_account_id":4257,"name":"Zane Bitter","email":"zbitter@redhat.com","username":"zaneb"},"change_message_id":"5d4e05032dd492b6ec932019882e5bac73266796","unresolved":false,"context_lines":[{"line_number":399,"context_line":"        Set the StackId pseudo parameter value"},{"line_number":400,"context_line":"        \u0027\u0027\u0027"},{"line_number":401,"context_line":"        if stack_identifier is not None:"},{"line_number":402,"context_line":"            self.params[\u0027AWS::StackId\u0027].schema.set_default("},{"line_number":403,"context_line":"                stack_identifier.arn())"},{"line_number":404,"context_line":"        else:"},{"line_number":405,"context_line":"            raise exception.InvalidStackIdentifier()"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAUH%2F%2By0w%3D","line":402,"updated":"2014-01-22 03:40:54.000000000","message":"I think this was a case of overzealous find/replace ;) This should still say PARAM_STACK_ID.","commit_id":"c739e7be47f40f1857c88488f8967599d7ea10ae"},{"author":{"_account_id":9331,"name":"Pablo Andres Fuente","email":"pablo.andres.fuente@gmail.com","username":"pafuent"},"change_message_id":"0f7e69352c605d1b9a63d1c9023ee206d4a8455f","unresolved":false,"context_lines":[{"line_number":399,"context_line":"        Set the StackId pseudo parameter value"},{"line_number":400,"context_line":"        \u0027\u0027\u0027"},{"line_number":401,"context_line":"        if stack_identifier is not None:"},{"line_number":402,"context_line":"            self.params[\u0027AWS::StackId\u0027].schema.set_default("},{"line_number":403,"context_line":"                stack_identifier.arn())"},{"line_number":404,"context_line":"        else:"},{"line_number":405,"context_line":"            raise exception.InvalidStackIdentifier()"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAUH%2F%2BwK8%3D","line":402,"in_reply_to":"AAAAUH%2F%2By0w%3D","updated":"2014-01-22 14:22:25.000000000","message":"Done","commit_id":"c739e7be47f40f1857c88488f8967599d7ea10ae"},{"author":{"_account_id":4257,"name":"Zane Bitter","email":"zbitter@redhat.com","username":"zaneb"},"change_message_id":"8a6489c63f53d15f254ef11caada7026a56ecbdf","unresolved":false,"context_lines":[{"line_number":403,"context_line":"            self.params[PARAM_STACK_ID].schema.set_default("},{"line_number":404,"context_line":"                stack_identifier.arn())"},{"line_number":405,"context_line":"        else:"},{"line_number":406,"context_line":"            raise exception.InvalidStackIdentifier()"},{"line_number":407,"context_line":""},{"line_number":408,"context_line":"    def _validate(self, user_params):"},{"line_number":409,"context_line":"        schemata \u003d self.tmpl.param_schemata()"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAUH%2F%2BVnQ%3D","line":406,"updated":"2014-01-27 22:17:21.000000000","message":"Can we not just log here instead of in the caller? Or just use ValueError?","commit_id":"f4db27329cd84238882a85a14bcfa0300b209e16"},{"author":{"_account_id":4257,"name":"Zane Bitter","email":"zbitter@redhat.com","username":"zaneb"},"change_message_id":"fc736fabdf99f6e06355dd00f7516a29df2c2743","unresolved":false,"context_lines":[{"line_number":403,"context_line":"            self.params[PARAM_STACK_ID].schema.set_default("},{"line_number":404,"context_line":"                stack_identifier.arn())"},{"line_number":405,"context_line":"        else:"},{"line_number":406,"context_line":"            raise exception.InvalidStackIdentifier()"},{"line_number":407,"context_line":""},{"line_number":408,"context_line":"    def _validate(self, user_params):"},{"line_number":409,"context_line":"        schemata \u003d self.tmpl.param_schemata()"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAUH%2F%2BQgY%3D","line":406,"in_reply_to":"AAAAUH%2F%2BRms%3D","updated":"2014-01-28 16:23:19.000000000","message":"\u003e I used the exception because there is no logger in parameters.\n\nSooo... create one?","commit_id":"f4db27329cd84238882a85a14bcfa0300b209e16"},{"author":{"_account_id":9331,"name":"Pablo Andres Fuente","email":"pablo.andres.fuente@gmail.com","username":"pafuent"},"change_message_id":"9df715c78cc369553cea1e98b6a471eb8fe3b306","unresolved":false,"context_lines":[{"line_number":403,"context_line":"            self.params[PARAM_STACK_ID].schema.set_default("},{"line_number":404,"context_line":"                stack_identifier.arn())"},{"line_number":405,"context_line":"        else:"},{"line_number":406,"context_line":"            raise exception.InvalidStackIdentifier()"},{"line_number":407,"context_line":""},{"line_number":408,"context_line":"    def _validate(self, user_params):"},{"line_number":409,"context_line":"        schemata \u003d self.tmpl.param_schemata()"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAUH%2F%2BRms%3D","line":406,"in_reply_to":"AAAAUH%2F%2BVnQ%3D","updated":"2014-01-28 15:26:49.000000000","message":"I used the exception because there is no logger in parameters. I just replaced this by a return value.","commit_id":"f4db27329cd84238882a85a14bcfa0300b209e16"}],"heat/engine/parser.py":[{"author":{"_account_id":4257,"name":"Zane Bitter","email":"zbitter@redhat.com","username":"zaneb"},"change_message_id":"8a6489c63f53d15f254ef11caada7026a56ecbdf","unresolved":false,"context_lines":[{"line_number":161,"context_line":"        \u0027\u0027\u0027"},{"line_number":162,"context_line":"        try:"},{"line_number":163,"context_line":"            self.parameters.set_stack_id(self.identifier())"},{"line_number":164,"context_line":"        except exception.InvalidStackIdentifier:"},{"line_number":165,"context_line":"            logger.warning(_(\"Unable to set parameters StackId identifier\"))"},{"line_number":166,"context_line":""},{"line_number":167,"context_line":"    @staticmethod"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAUH%2F%2BVrI%3D","line":164,"updated":"2014-01-27 22:17:21.000000000","message":"I\u0027m not really seeing the point of raising an exception, catching it and just logging it. Why not log at the point where the error occurred and forget raising an exception?","commit_id":"f4db27329cd84238882a85a14bcfa0300b209e16"},{"author":{"_account_id":9331,"name":"Pablo Andres Fuente","email":"pablo.andres.fuente@gmail.com","username":"pafuent"},"change_message_id":"9df715c78cc369553cea1e98b6a471eb8fe3b306","unresolved":false,"context_lines":[{"line_number":161,"context_line":"        \u0027\u0027\u0027"},{"line_number":162,"context_line":"        try:"},{"line_number":163,"context_line":"            self.parameters.set_stack_id(self.identifier())"},{"line_number":164,"context_line":"        except exception.InvalidStackIdentifier:"},{"line_number":165,"context_line":"            logger.warning(_(\"Unable to set parameters StackId identifier\"))"},{"line_number":166,"context_line":""},{"line_number":167,"context_line":"    @staticmethod"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAUH%2F%2BRmM%3D","line":164,"in_reply_to":"AAAAUH%2F%2BVrI%3D","updated":"2014-01-28 15:26:49.000000000","message":"Done","commit_id":"f4db27329cd84238882a85a14bcfa0300b209e16"}],"heat/engine/template.py":[{"author":{"_account_id":4257,"name":"Zane Bitter","email":"zbitter@redhat.com","username":"zaneb"},"change_message_id":"5d4e05032dd492b6ec932019882e5bac73266796","unresolved":false,"context_lines":[{"line_number":476,"context_line":"        return dict((name, parameters.Schema.from_dict(schema))"},{"line_number":477,"context_line":"                    for name, schema in params)"},{"line_number":478,"context_line":""},{"line_number":479,"context_line":"    def parameters(self, stack_identifier, user_params, validate_value\u003dTrue):"},{"line_number":480,"context_line":"        return parameters.Parameters(stack_identifier, self,"},{"line_number":481,"context_line":"                                     user_params\u003duser_params,"},{"line_number":482,"context_line":"                                     validate_value\u003dvalidate_value)"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAUH%2F%2ByyM%3D","line":479,"updated":"2014-01-22 03:40:54.000000000","message":"I kind of expected this method to appear in the next patch in the series, but I am OK with this too.","commit_id":"c739e7be47f40f1857c88488f8967599d7ea10ae"}],"heat/tests/test_parameters.py":[{"author":{"_account_id":4257,"name":"Zane Bitter","email":"zbitter@redhat.com","username":"zaneb"},"change_message_id":"8a6489c63f53d15f254ef11caada7026a56ecbdf","unresolved":false,"context_lines":[{"line_number":329,"context_line":"        self.assertEqual("},{"line_number":330,"context_line":"            \u0027arn:openstack:heat:::stacks/{0}/{1}\u0027.format("},{"line_number":331,"context_line":"            stack_name,"},{"line_number":332,"context_line":"            urlutils.quote(\u0027None\u0027)),"},{"line_number":333,"context_line":"            params[\u0027AWS::StackId\u0027])"},{"line_number":334,"context_line":""},{"line_number":335,"context_line":"        self.assertIn(\u0027AWS::Region\u0027, params)"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAUH%2F%2BVlY%3D","line":332,"updated":"2014-01-27 22:17:21.000000000","message":"Uh, why does this need quoting? The output is the same as the input.","commit_id":"f4db27329cd84238882a85a14bcfa0300b209e16"},{"author":{"_account_id":9331,"name":"Pablo Andres Fuente","email":"pablo.andres.fuente@gmail.com","username":"pafuent"},"change_message_id":"9df715c78cc369553cea1e98b6a471eb8fe3b306","unresolved":false,"context_lines":[{"line_number":329,"context_line":"        self.assertEqual("},{"line_number":330,"context_line":"            \u0027arn:openstack:heat:::stacks/{0}/{1}\u0027.format("},{"line_number":331,"context_line":"            stack_name,"},{"line_number":332,"context_line":"            urlutils.quote(\u0027None\u0027)),"},{"line_number":333,"context_line":"            params[\u0027AWS::StackId\u0027])"},{"line_number":334,"context_line":""},{"line_number":335,"context_line":"        self.assertIn(\u0027AWS::Region\u0027, params)"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAUH%2F%2BRlU%3D","line":332,"in_reply_to":"AAAAUH%2F%2BVlY%3D","updated":"2014-01-28 15:26:49.000000000","message":"Done","commit_id":"f4db27329cd84238882a85a14bcfa0300b209e16"},{"author":{"_account_id":4257,"name":"Zane Bitter","email":"zbitter@redhat.com","username":"zaneb"},"change_message_id":"8a6489c63f53d15f254ef11caada7026a56ecbdf","unresolved":false,"context_lines":[{"line_number":337,"context_line":"    def test_pseudo_param_stackid(self):"},{"line_number":338,"context_line":"        stack_name \u003d \u0027test_stack\u0027"},{"line_number":339,"context_line":"        params \u003d self.new_parameters(stack_name, {\u0027Parameters\u0027: {}},"},{"line_number":340,"context_line":"                                     stack_id\u003d\u0027123::foo\u0027)"},{"line_number":341,"context_line":""},{"line_number":342,"context_line":"        self.assertEqual("},{"line_number":343,"context_line":"            \u0027arn:openstack:heat:::stacks/{0}/{1}\u0027.format("}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAUH%2F%2BVkc%3D","line":340,"updated":"2014-01-27 22:17:21.000000000","message":"Stack *IDs* are never in this format. It was used when set_stack_id() took an ARN as an argument. Now that it takes a HeatIdentifier, just use a hex string as the stack_id part of the identifier, e.g. \"abc123\"","commit_id":"f4db27329cd84238882a85a14bcfa0300b209e16"},{"author":{"_account_id":9331,"name":"Pablo Andres Fuente","email":"pablo.andres.fuente@gmail.com","username":"pafuent"},"change_message_id":"9df715c78cc369553cea1e98b6a471eb8fe3b306","unresolved":false,"context_lines":[{"line_number":337,"context_line":"    def test_pseudo_param_stackid(self):"},{"line_number":338,"context_line":"        stack_name \u003d \u0027test_stack\u0027"},{"line_number":339,"context_line":"        params \u003d self.new_parameters(stack_name, {\u0027Parameters\u0027: {}},"},{"line_number":340,"context_line":"                                     stack_id\u003d\u0027123::foo\u0027)"},{"line_number":341,"context_line":""},{"line_number":342,"context_line":"        self.assertEqual("},{"line_number":343,"context_line":"            \u0027arn:openstack:heat:::stacks/{0}/{1}\u0027.format("}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAUH%2F%2BRZM%3D","line":340,"in_reply_to":"AAAAUH%2F%2BVkc%3D","updated":"2014-01-28 15:26:49.000000000","message":"Done","commit_id":"f4db27329cd84238882a85a14bcfa0300b209e16"},{"author":{"_account_id":4257,"name":"Zane Bitter","email":"zbitter@redhat.com","username":"zaneb"},"change_message_id":"7809c9c10442930b708fcc40129ef242146578b4","unresolved":false,"context_lines":[{"line_number":334,"context_line":"    def test_pseudo_param_stackid(self):"},{"line_number":335,"context_line":"        stack_name \u003d \u0027test_stack\u0027"},{"line_number":336,"context_line":"        params \u003d self.new_parameters(stack_name, {\u0027Parameters\u0027: {}},"},{"line_number":337,"context_line":"                                     stack_id\u003d\u0027foo123\u0027)"},{"line_number":338,"context_line":""},{"line_number":339,"context_line":"        self.assertEqual("},{"line_number":340,"context_line":"            \u0027arn:openstack:heat:::stacks/{0}/{1}\u0027.format(stack_name, \u0027foo123\u0027),"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAUH%2F%2BQe8%3D","line":337,"updated":"2014-01-28 16:33:20.000000000","message":"Not valid hex, but it will do.","commit_id":"2f09edc88d88b24eb5b7d19774406279ff8085d4"}],"heat/tests/test_parser.py":[{"author":{"_account_id":4257,"name":"Zane Bitter","email":"zbitter@redhat.com","username":"zaneb"},"change_message_id":"8a6489c63f53d15f254ef11caada7026a56ecbdf","unresolved":false,"context_lines":[{"line_number":909,"context_line":"    def test_set_param_id(self):"},{"line_number":910,"context_line":"        tmpl \u003d parser.Template({})"},{"line_number":911,"context_line":"        self.stack \u003d parser.Stack(self.ctx, \u0027param_arn_test\u0027,"},{"line_number":912,"context_line":"                                  tmpl)"},{"line_number":913,"context_line":"        exp_prefix \u003d (\u0027arn:openstack:heat::test_tenant_id\u0027"},{"line_number":914,"context_line":"                      \u0027:stacks/param_arn_test/\u0027)"},{"line_number":915,"context_line":"        self.assertEqual(self.stack.parameters[\u0027AWS::StackId\u0027],"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAUH%2F%2BVi0%3D","line":912,"updated":"2014-01-27 22:17:21.000000000","message":"This doesn\u0027t appear to change anything, and nor does any of the other changes in this file from here down. I think it is an artifact left over from splitting up a previous patch?","commit_id":"f4db27329cd84238882a85a14bcfa0300b209e16"},{"author":{"_account_id":9331,"name":"Pablo Andres Fuente","email":"pablo.andres.fuente@gmail.com","username":"pafuent"},"change_message_id":"9df715c78cc369553cea1e98b6a471eb8fe3b306","unresolved":false,"context_lines":[{"line_number":909,"context_line":"    def test_set_param_id(self):"},{"line_number":910,"context_line":"        tmpl \u003d parser.Template({})"},{"line_number":911,"context_line":"        self.stack \u003d parser.Stack(self.ctx, \u0027param_arn_test\u0027,"},{"line_number":912,"context_line":"                                  tmpl)"},{"line_number":913,"context_line":"        exp_prefix \u003d (\u0027arn:openstack:heat::test_tenant_id\u0027"},{"line_number":914,"context_line":"                      \u0027:stacks/param_arn_test/\u0027)"},{"line_number":915,"context_line":"        self.assertEqual(self.stack.parameters[\u0027AWS::StackId\u0027],"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAUH%2F%2BRKE%3D","line":912,"in_reply_to":"AAAAUH%2F%2BVi0%3D","updated":"2014-01-28 15:26:49.000000000","message":"Done","commit_id":"f4db27329cd84238882a85a14bcfa0300b209e16"},{"author":{"_account_id":4257,"name":"Zane Bitter","email":"zbitter@redhat.com","username":"zaneb"},"change_message_id":"8a6489c63f53d15f254ef11caada7026a56ecbdf","unresolved":false,"context_lines":[{"line_number":919,"context_line":"        self.assertEqual(self.stack.parameters[\u0027AWS::StackId\u0027],"},{"line_number":920,"context_line":"                         exp_prefix + self.stack.id)"},{"line_number":921,"context_line":"        self.assertEqual(self.stack.parameters["},{"line_number":922,"context_line":"                         \u0027AWS::StackId\u0027],"},{"line_number":923,"context_line":"                         identifier.arn())"},{"line_number":924,"context_line":"        self.m.VerifyAll()"},{"line_number":925,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAUH%2F%2BVjc%3D","line":922,"updated":"2014-01-27 22:17:21.000000000","message":"This is just a whitespace change, could you eliminate it?","commit_id":"f4db27329cd84238882a85a14bcfa0300b209e16"},{"author":{"_account_id":9331,"name":"Pablo Andres Fuente","email":"pablo.andres.fuente@gmail.com","username":"pafuent"},"change_message_id":"9df715c78cc369553cea1e98b6a471eb8fe3b306","unresolved":false,"context_lines":[{"line_number":919,"context_line":"        self.assertEqual(self.stack.parameters[\u0027AWS::StackId\u0027],"},{"line_number":920,"context_line":"                         exp_prefix + self.stack.id)"},{"line_number":921,"context_line":"        self.assertEqual(self.stack.parameters["},{"line_number":922,"context_line":"                         \u0027AWS::StackId\u0027],"},{"line_number":923,"context_line":"                         identifier.arn())"},{"line_number":924,"context_line":"        self.m.VerifyAll()"},{"line_number":925,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAUH%2F%2BRP8%3D","line":922,"in_reply_to":"AAAAUH%2F%2BVjc%3D","updated":"2014-01-28 15:26:49.000000000","message":"Done","commit_id":"f4db27329cd84238882a85a14bcfa0300b209e16"},{"author":{"_account_id":4257,"name":"Zane Bitter","email":"zbitter@redhat.com","username":"zaneb"},"change_message_id":"7809c9c10442930b708fcc40129ef242146578b4","unresolved":false,"context_lines":[{"line_number":927,"context_line":"                \u0027AResource\u0027: {\u0027Type\u0027: \u0027ResourceWithPropsType\u0027,"},{"line_number":928,"context_line":"                              \u0027Metadata\u0027: {\u0027Bar\u0027: {\u0027Ref\u0027: \u0027AWS::StackId\u0027}},"},{"line_number":929,"context_line":"                              \u0027Properties\u0027: {\u0027Foo\u0027: \u0027abc\u0027}}}}"},{"line_number":930,"context_line":"        self.stack \u003d parser.Stack(self.ctx, \u0027update_stack_arn_test\u0027,"},{"line_number":931,"context_line":"                                  template.Template(tmpl))"},{"line_number":932,"context_line":"        self.stack.store()"},{"line_number":933,"context_line":"        self.stack.create()"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAUH%2F%2BQcc%3D","line":930,"updated":"2014-01-28 16:33:20.000000000","message":"BTW\n\n  git checkout --patch HEAD^ \u003cfilename\u003e\n\nis a great way of reverting parts of a patch without leaving behind unrelated whitespace changes.","commit_id":"2f09edc88d88b24eb5b7d19774406279ff8085d4"}]}
