)]}'
{"contrib/rackspace/heat/engine/plugins/cloud_loadbalancer.py":[{"author":{"_account_id":9542,"name":"Pavlo Shchelokovskyy","email":"pshchelokovskyy@mirantis.com","username":"pshchelo"},"change_message_id":"ad0a5c83fc038a4d9ce074a4c324f0a0f8157d0f","unresolved":false,"context_lines":[{"line_number":610,"context_line":"            raise exception.InvalidTemplateAttribute(resource\u003dself.name,"},{"line_number":611,"context_line":"                                                     key\u003dkey)"},{"line_number":612,"context_line":"        function \u003d attribute_function[key]"},{"line_number":613,"context_line":"        logger.info(_(\u0027%s.GetAtt(%s) \u003d\u003d %s\u0027) % (self.name, key, function))"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAUH%2F%2Beqc%3D","line":613,"updated":"2014-01-25 08:29:51.000000000","message":"It seems that there is no use for internationalization for this string in its current state","commit_id":"24bb5e0b53e11da81039f99175991291d20a7f03"},{"author":{"_account_id":6577,"name":"Sergey Kraynev","email":"sergejyit@gmail.com","username":"skraynev"},"change_message_id":"08050c2b570504bef3d513cfbc0239994ce7b2fc","unresolved":false,"context_lines":[{"line_number":611,"context_line":"                                                     key\u003dkey)"},{"line_number":612,"context_line":"        function \u003d attribute_function[key]"},{"line_number":613,"context_line":"        logger.info(_(\u0027%(name)s.GetAtt(%(key)s) \u003d\u003d %(function)s\u0027),"},{"line_number":614,"context_line":"                    {\u0027name\u0027: self.name, \u0027key\u0027: key, \u0027function\u0027: function})"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAUH%2F%2BaFY%3D","line":614,"updated":"2014-01-27 09:13:04.000000000","message":"Why do you remove line 614?\nIMO, it change behavior of  _resolve_attribute function.","commit_id":"94f7ba6980a6039fc9b0a80d1b479721011b00d0"},{"author":{"_account_id":6577,"name":"Sergey Kraynev","email":"sergejyit@gmail.com","username":"skraynev"},"change_message_id":"9779fdf1607a87e14908dbd12517b980d6586ea6","unresolved":false,"context_lines":[{"line_number":358,"context_line":"    }"},{"line_number":359,"context_line":""},{"line_number":360,"context_line":"    attributes_schema \u003d {"},{"line_number":361,"context_line":"        \u0027PublicIp\u0027: _(\u0027Public IP address of the specified \u0027"},{"line_number":362,"context_line":"                      \u0027instance.\u0027)}"},{"line_number":363,"context_line":""},{"line_number":364,"context_line":"    update_allowed_keys \u003d (\u0027Properties\u0027,)"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAUH%2F%2BZ9s%3D","line":361,"updated":"2014-01-27 09:50:16.000000000","message":"Is it adding i18 support for attribute schema?\nI think, that it\u0027s not correct.","commit_id":"461d2cd9b0228f916568ad9195f79e49fd3af7b1"},{"author":{"_account_id":7253,"name":"Jason Dunsmore","email":"jasondunsmore@gmail.com","username":"jbd"},"change_message_id":"6096598b92d928ce4c507633ffeb16b6c1f087f0","unresolved":false,"context_lines":[{"line_number":610,"context_line":"            raise exception.InvalidTemplateAttribute(resource\u003dself.name,"},{"line_number":611,"context_line":"                                                     key\u003dkey)"},{"line_number":612,"context_line":"        function \u003d attribute_function[key]"},{"line_number":613,"context_line":"        logger.info(_(\u0027%(name)s.GetAtt(%(key)s) \u003d\u003d %(function)s\u0027),"},{"line_number":614,"context_line":"                    {\u0027name\u0027: self.name, \u0027key\u0027: key, \u0027function\u0027: function})"},{"line_number":615,"context_line":"        return unicode(function)"}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAAUH%2F%2BKeA%3D","line":613,"updated":"2014-01-29 15:17:48.000000000","message":"The final character should be a \"%\" instead of a \",\".","commit_id":"bd04e6f8dadb3be66ac104a02f406fe7c8e314c6"},{"author":{"_account_id":8289,"name":"huangtianhua","email":"tiantian223@163.com","username":"huangtianhua"},"change_message_id":"f4b061ab705da0ae34012a98e26e3af3dc5135c4","unresolved":false,"context_lines":[{"line_number":610,"context_line":"            raise exception.InvalidTemplateAttribute(resource\u003dself.name,"},{"line_number":611,"context_line":"                                                     key\u003dkey)"},{"line_number":612,"context_line":"        function \u003d attribute_function[key]"},{"line_number":613,"context_line":"        logger.info(_(\u0027%(name)s.GetAtt(%(key)s) \u003d\u003d %(function)s\u0027),"},{"line_number":614,"context_line":"                    {\u0027name\u0027: self.name, \u0027key\u0027: key, \u0027function\u0027: function})"},{"line_number":615,"context_line":"        return unicode(function)"}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAAUX%2F%2F6IU%3D","line":613,"in_reply_to":"AAAAUH%2F%2BKeA%3D","updated":"2014-02-10 01:54:57.000000000","message":"Thanks.\nBoth \"%\" and \",\" are used in heat? What\u0027s the different about them? I have no idea.","commit_id":"bd04e6f8dadb3be66ac104a02f406fe7c8e314c6"}],"contrib/rackspace/heat/engine/plugins/cloud_server.py":[{"author":{"_account_id":9542,"name":"Pavlo Shchelokovskyy","email":"pshchelokovskyy@mirantis.com","username":"pshchelo"},"change_message_id":"ad0a5c83fc038a4d9ce074a4c324f0a0f8157d0f","unresolved":false,"context_lines":[{"line_number":567,"context_line":"            raise exception.InvalidTemplateAttribute(resource\u003dself.name,"},{"line_number":568,"context_line":"                                                     key\u003dkey)"},{"line_number":569,"context_line":"        function \u003d attribute_function[key]"},{"line_number":570,"context_line":"        logger.info(_(\u0027%s._resolve_attribute(%s) \u003d\u003d %s\u0027)"},{"line_number":571,"context_line":"                    % (self.name, key, function))"},{"line_number":572,"context_line":"        return unicode(function)"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAUH%2F%2BeqY%3D","line":570,"updated":"2014-01-25 08:29:51.000000000","message":"the same as my previous comment","commit_id":"24bb5e0b53e11da81039f99175991291d20a7f03"},{"author":{"_account_id":6577,"name":"Sergey Kraynev","email":"sergejyit@gmail.com","username":"skraynev"},"change_message_id":"9779fdf1607a87e14908dbd12517b980d6586ea6","unresolved":false,"context_lines":[{"line_number":325,"context_line":"                chan.recv(1024)"},{"line_number":326,"context_line":"            except socket.timeout:"},{"line_number":327,"context_line":"                raise exception.Error(_(\"SSH command timed out after %s \""},{"line_number":328,"context_line":"                                        \"minutes\") % self.stack.timeout_mins)"},{"line_number":329,"context_line":"            else:"},{"line_number":330,"context_line":"                return chan.recv_exit_status()"},{"line_number":331,"context_line":"            finally:"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAUH%2F%2BZ6s%3D","line":328,"updated":"2014-01-27 09:50:16.000000000","message":"It\u0027s not attribute or log message, so it\u0027s not related change.","commit_id":"461d2cd9b0228f916568ad9195f79e49fd3af7b1"},{"author":{"_account_id":6577,"name":"Sergey Kraynev","email":"sergejyit@gmail.com","username":"skraynev"},"change_message_id":"89355e3959fb83775d3a18a9c0d6b0a9c921b367","unresolved":false,"context_lines":[{"line_number":321,"context_line":"                # The channel timeout only works for read/write operations"},{"line_number":322,"context_line":"                chan.recv(1024)"},{"line_number":323,"context_line":"            except socket.timeout:"},{"line_number":324,"context_line":"                raise exception.Error(_(\"SSH command timed out after %s \""},{"line_number":325,"context_line":"                                        \"minutes\") % self.stack.timeout_mins)"},{"line_number":326,"context_line":"            else:"},{"line_number":327,"context_line":"                return chan.recv_exit_status()"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAUH%2F%2BTV8%3D","line":324,"updated":"2014-01-28 07:48:56.000000000","message":"I am still thinking, that it\u0027s not related change with commit message.\nI offer you fix it (support i18n in error messages) in separate patch.","commit_id":"8abdcd0328ad1fdeb203e0e14f603386a2a264b3"},{"author":{"_account_id":8289,"name":"huangtianhua","email":"tiantian223@163.com","username":"huangtianhua"},"change_message_id":"15213fb9d9e1ee79056b8a165d2ee6fd42ba8483","unresolved":false,"context_lines":[{"line_number":321,"context_line":"                # The channel timeout only works for read/write operations"},{"line_number":322,"context_line":"                chan.recv(1024)"},{"line_number":323,"context_line":"            except socket.timeout:"},{"line_number":324,"context_line":"                raise exception.Error(_(\"SSH command timed out after %s \""},{"line_number":325,"context_line":"                                        \"minutes\") % self.stack.timeout_mins)"},{"line_number":326,"context_line":"            else:"},{"line_number":327,"context_line":"                return chan.recv_exit_status()"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAUH%2F%2BRT0%3D","line":324,"in_reply_to":"AAAAUH%2F%2BTV8%3D","updated":"2014-01-28 14:49:29.000000000","message":"Done","commit_id":"8abdcd0328ad1fdeb203e0e14f603386a2a264b3"},{"author":{"_account_id":7253,"name":"Jason Dunsmore","email":"jasondunsmore@gmail.com","username":"jbd"},"change_message_id":"6096598b92d928ce4c507633ffeb16b6c1f087f0","unresolved":false,"context_lines":[{"line_number":564,"context_line":"            raise exception.InvalidTemplateAttribute(resource\u003dself.name,"},{"line_number":565,"context_line":"                                                     key\u003dkey)"},{"line_number":566,"context_line":"        function \u003d attribute_function[key]"},{"line_number":567,"context_line":"        logger.info(_(\u0027%(name)s._resolve_attribute(%(key)s) \u003d\u003d %(function)s\u0027),"},{"line_number":568,"context_line":"                    {\u0027name\u0027: self.name, \u0027key\u0027: key, \u0027function\u0027: function})"},{"line_number":569,"context_line":"        return unicode(function)"}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAAUH%2F%2BKdY%3D","line":567,"updated":"2014-01-29 15:17:48.000000000","message":"The final character should be a \"%\" instead of a \",\".","commit_id":"bd04e6f8dadb3be66ac104a02f406fe7c8e314c6"}],"contrib/rackspace/heat/engine/plugins/clouddatabase.py":[{"author":{"_account_id":6577,"name":"Sergey Kraynev","email":"sergejyit@gmail.com","username":"skraynev"},"change_message_id":"9779fdf1607a87e14908dbd12517b980d6586ea6","unresolved":false,"context_lines":[{"line_number":154,"context_line":"    }"},{"line_number":155,"context_line":""},{"line_number":156,"context_line":"    attributes_schema \u003d {"},{"line_number":157,"context_line":"        \"hostname\": _(\"Hostname of the instance\"),"},{"line_number":158,"context_line":"        \"href\": _(\"Api endpoint reference of the instance\")"},{"line_number":159,"context_line":"    }"},{"line_number":160,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAUH%2F%2BZ9M%3D","line":157,"updated":"2014-01-27 09:50:16.000000000","message":"look in comment for LB.","commit_id":"461d2cd9b0228f916568ad9195f79e49fd3af7b1"},{"author":{"_account_id":6577,"name":"Sergey Kraynev","email":"sergejyit@gmail.com","username":"skraynev"},"change_message_id":"9779fdf1607a87e14908dbd12517b980d6586ea6","unresolved":false,"context_lines":[{"line_number":155,"context_line":""},{"line_number":156,"context_line":"    attributes_schema \u003d {"},{"line_number":157,"context_line":"        \"hostname\": _(\"Hostname of the instance\"),"},{"line_number":158,"context_line":"        \"href\": _(\"Api endpoint reference of the instance\")"},{"line_number":159,"context_line":"    }"},{"line_number":160,"context_line":""},{"line_number":161,"context_line":"    def __init__(self, name, json_snippet, stack):"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAUH%2F%2BZ9E%3D","line":158,"updated":"2014-01-27 09:50:16.000000000","message":"same.","commit_id":"461d2cd9b0228f916568ad9195f79e49fd3af7b1"},{"author":{"_account_id":7253,"name":"Jason Dunsmore","email":"jasondunsmore@gmail.com","username":"jbd"},"change_message_id":"6096598b92d928ce4c507633ffeb16b6c1f087f0","unresolved":false,"context_lines":[{"line_number":202,"context_line":"            return False"},{"line_number":203,"context_line":""},{"line_number":204,"context_line":"        logger.info(_(\"Cloud DB instance %(sqlinstancename)s created \""},{"line_number":205,"context_line":"                      \"(flavor:%(flavor)s, volume:%(volume)s)\"),"},{"line_number":206,"context_line":"                    {\u0027sqlinstancename\u0027: self.sqlinstancename,"},{"line_number":207,"context_line":"                     \u0027flavor\u0027: self.flavor,"},{"line_number":208,"context_line":"                     \u0027volume\u0027: self.volume})"}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAAUH%2F%2BKdM%3D","line":205,"updated":"2014-01-29 15:17:48.000000000","message":"The final character should be a \"%\" instead of a \",\".","commit_id":"bd04e6f8dadb3be66ac104a02f406fe7c8e314c6"},{"author":{"_account_id":7253,"name":"Jason Dunsmore","email":"jasondunsmore@gmail.com","username":"jbd"},"change_message_id":"6096598b92d928ce4c507633ffeb16b6c1f087f0","unresolved":false,"context_lines":[{"line_number":213,"context_line":"                character_set\u003ddatabase[self.DATABASE_CHARACTER_SET],"},{"line_number":214,"context_line":"                collate\u003ddatabase[self.DATABASE_COLLATE])"},{"line_number":215,"context_line":"            logger.info(_(\"Database %(name)s created on cloud DB \""},{"line_number":216,"context_line":"                          \"instance %(sqlinstancename)s\"),"},{"line_number":217,"context_line":"                        {\u0027name\u0027: database[self.DATABASE_NAME],"},{"line_number":218,"context_line":"                         \u0027sqlinstancename\u0027: self.sqlinstancename})"},{"line_number":219,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAAUH%2F%2BKdI%3D","line":216,"updated":"2014-01-29 15:17:48.000000000","message":"The final character should be a \"%\" instead of a \",\".","commit_id":"bd04e6f8dadb3be66ac104a02f406fe7c8e314c6"}],"heat/engine/resources/eip.py":[{"author":{"_account_id":7253,"name":"Jason Dunsmore","email":"jasondunsmore@gmail.com","username":"jbd"},"change_message_id":"6096598b92d928ce4c507633ffeb16b6c1f087f0","unresolved":false,"context_lines":[{"line_number":194,"context_line":"            server.add_floating_ip(self.properties[self.EIP])"},{"line_number":195,"context_line":"            self.resource_id_set(self.properties[self.EIP])"},{"line_number":196,"context_line":"            logger.debug(_(\u0027ElasticIpAssociation \u0027"},{"line_number":197,"context_line":"                           \u0027%(instance)s.add_floating_ip(%(eip)s)\u0027),"},{"line_number":198,"context_line":"                         {\u0027instance\u0027: self.properties[self.INSTANCE_ID],"},{"line_number":199,"context_line":"                          \u0027eip\u0027: self.properties[self.EIP]})"},{"line_number":200,"context_line":"        elif self.properties[self.ALLOCATION_ID]:"}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAAUH%2F%2BKdE%3D","line":197,"updated":"2014-01-29 15:17:48.000000000","message":"The final character should be a \"%\" instead of a \",\".","commit_id":"bd04e6f8dadb3be66ac104a02f406fe7c8e314c6"}],"heat/engine/resources/instance.py":[{"author":{"_account_id":7253,"name":"Jason Dunsmore","email":"jasondunsmore@gmail.com","username":"jbd"},"change_message_id":"6096598b92d928ce4c507633ffeb16b6c1f087f0","unresolved":false,"context_lines":[{"line_number":330,"context_line":"                      \u0027PrivateDnsName\u0027]:"},{"line_number":331,"context_line":"            res \u003d self._ipaddress()"},{"line_number":332,"context_line":""},{"line_number":333,"context_line":"        logger.info(_(\u0027%(name)s._resolve_attribute(%(attname)s) \u003d\u003d %(res)s\u0027),"},{"line_number":334,"context_line":"                    {\u0027name\u0027: self.name,"},{"line_number":335,"context_line":"                     \u0027attname\u0027: name,"},{"line_number":336,"context_line":"                     \u0027res\u0027: res})"}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAAUH%2F%2BKdA%3D","line":333,"updated":"2014-01-29 15:17:48.000000000","message":"The final character should be a \"%\" instead of a \",\".","commit_id":"bd04e6f8dadb3be66ac104a02f406fe7c8e314c6"},{"author":{"_account_id":7253,"name":"Jason Dunsmore","email":"jasondunsmore@gmail.com","username":"jbd"},"change_message_id":"6096598b92d928ce4c507633ffeb16b6c1f087f0","unresolved":false,"context_lines":[{"line_number":659,"context_line":""},{"line_number":660,"context_line":"                server.get()"},{"line_number":661,"context_line":"                logger.debug(_(\"%(name)s check_suspend_complete \""},{"line_number":662,"context_line":"                               \"status \u003d %(status)s\"),"},{"line_number":663,"context_line":"                             {\u0027name\u0027: self.name,"},{"line_number":664,"context_line":"                              \u0027status\u0027: server.status})"},{"line_number":665,"context_line":"                if server.status in list(nova_utils.deferred_server_statuses +"}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAAUH%2F%2BKc0%3D","line":662,"updated":"2014-01-29 15:17:48.000000000","message":"The final character should be a \"%\" instead of a \",\".","commit_id":"bd04e6f8dadb3be66ac104a02f406fe7c8e314c6"}],"heat/engine/resources/loadbalancer.py":[{"author":{"_account_id":7494,"name":"Guangya Liu","email":"gyliu513@gmail.com","username":"JayLau"},"change_message_id":"c51c9bd0a844bdc94d10e6fb7b4340cdd86dadd7","unresolved":false,"context_lines":[{"line_number":200,"context_line":"loadbalancer_opts \u003d ["},{"line_number":201,"context_line":"    cfg.StrOpt(\u0027loadbalancer_template\u0027,"},{"line_number":202,"context_line":"               default\u003dNone,"},{"line_number":203,"context_line":"               help\u003d_(\u0027Custom template for the built-in \u0027"},{"line_number":204,"context_line":"                      \u0027loadbalancer nested stack\u0027))]"},{"line_number":205,"context_line":"cfg.CONF.register_opts(loadbalancer_opts)"},{"line_number":206,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAUH%2F%2BTw4%3D","line":203,"updated":"2014-01-28 05:25:58.000000000","message":"This is not needed.","commit_id":"8107bdb61eb606e9a2eb97d09ccc3aae66e79a43"}]}
