)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":16258,"name":"nikesh","email":"nike.niec@gmail.com","username":"nikem"},"change_message_id":"a677bb2d6383f2d310bcebfe5979458d44323ac6","unresolved":false,"context_lines":[{"line_number":7,"context_line":"Hacking log format arg check"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Added hacking check for log lines that accidently pass a tuple as the"},{"line_number":10,"context_line":"second argument when providing format arguments"},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"Change-Id: Ifba23948f9fb49e9f6a1ee7e743aba0cd864c827"},{"line_number":13,"context_line":"Closes-Bug: 1415241"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":3,"id":"da20952f_89f04e93","line":10,"updated":"2015-09-08 19:01:23.000000000","message":". at EOT","commit_id":"fd991a8bc88ecf471993e43fb917a4fd4f60e11b"},{"author":{"_account_id":16258,"name":"nikesh","email":"nike.niec@gmail.com","username":"nikem"},"change_message_id":"84d9ffafff6803de9030d8a56a282b0b9bc557d1","unresolved":false,"context_lines":[{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Added hacking check for log lines that accidently pass a tuple as the"},{"line_number":10,"context_line":"second argument when providing format arguments"},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"Change-Id: Ifba23948f9fb49e9f6a1ee7e743aba0cd864c827"},{"line_number":13,"context_line":"Closes-Bug: 1415241"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":3,"id":"da20952f_f9588a59","line":11,"updated":"2015-09-09 19:17:28.000000000","message":"if you do another update, then please put period here too","commit_id":"fd991a8bc88ecf471993e43fb917a4fd4f60e11b"},{"author":{"_account_id":16258,"name":"nikesh","email":"nike.niec@gmail.com","username":"nikem"},"change_message_id":"8214ebe1259de81bf29526d1973403048a5a9097","unresolved":false,"context_lines":[{"line_number":7,"context_line":"Hacking log format arg check"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Added hacking check for log lines that accidently pass a tuple as the"},{"line_number":10,"context_line":"second argument when providing format arguments"},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"Change-Id: Ifba23948f9fb49e9f6a1ee7e743aba0cd864c827"},{"line_number":13,"context_line":"Closes-Bug: 1415241"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":4,"id":"da20952f_6f4ca89d","line":10,"updated":"2015-09-09 20:14:39.000000000","message":"same as old comment in case another update","commit_id":"381e05fd54393b69a89484a29074d54bd166c9cd"},{"author":{"_account_id":16258,"name":"nikesh","email":"nike.niec@gmail.com","username":"nikem"},"change_message_id":"2daf1343a8ea7f6d187c6bff8701330cff588569","unresolved":false,"context_lines":[{"line_number":7,"context_line":"Hacking log format arg check"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Added hacking check for log lines that accidently pass a tuple as the"},{"line_number":10,"context_line":"second argument when providing format arguments."},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"Change-Id: Ifba23948f9fb49e9f6a1ee7e743aba0cd864c827"},{"line_number":13,"context_line":"Closes-Bug: 1415241"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":5,"id":"da20952f_a684180b","line":10,"updated":"2015-09-10 09:03:37.000000000","message":"if do another update, then please change \u0027second argument\u0027 because now we are checking any argument","commit_id":"b7fc72c688ab0eaeb4a85a9af3a26428a94854c5"}],"HACKING.rst":[{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"9468d290d39b2200bdaefa92aeef5cd4d5719fc0","unresolved":false,"context_lines":[{"line_number":17,"context_line":"- [N330] LOG.warning messages require translations `_LW()`."},{"line_number":18,"context_line":"- [N333] Ensure that oslo namespaces are used for namespaced libraries."},{"line_number":19,"context_line":"- [N336] Must use a dict comprehension instead of a dict constructor with a sequence of key-value pairs."},{"line_number":20,"context_line":"- [N337] Check for improper use of logging format arguments"},{"line_number":21,"context_line":"- [C301] timeutils.utcnow() from oslo_utils should be used instead of datetime.now()."},{"line_number":22,"context_line":"- [C302] six.text_type should be used instead of unicode"},{"line_number":23,"context_line":"- [C303] Ensure that there are no \u0027print()\u0027 statements in code that is being committed."}],"source_content_type":"text/x-rst","patch_set":2,"id":"da20952f_5feb1513","line":20,"updated":"2015-09-06 18:23:44.000000000","message":"N337 is actually \"Don\u0027t import translation in test\". I don\u0027t see this check in Nova:\n\nhttps://github.com/openstack/nova/blob/master/HACKING.rst\n\nEither correct this to the right ID, or change this to add as a new Cxxx Cinder check.","commit_id":"f3176974c9882283726121dc7a1daeb51190b014"},{"author":{"_account_id":16258,"name":"nikesh","email":"nike.niec@gmail.com","username":"nikem"},"change_message_id":"a677bb2d6383f2d310bcebfe5979458d44323ac6","unresolved":false,"context_lines":[{"line_number":26,"context_line":"- [C307] LOG.warn is deprecated. Enforce use of LOG.warning."},{"line_number":27,"context_line":"- [C308] timeutils.isotime() must not be used (deprecated)."},{"line_number":28,"context_line":"- [C309] Unit tests should not perform logging."},{"line_number":29,"context_line":"- [C310] Check for improper use of logging format arguments"},{"line_number":30,"context_line":""},{"line_number":31,"context_line":"General"},{"line_number":32,"context_line":"-------"}],"source_content_type":"text/x-rst","patch_set":3,"id":"da20952f_6915ba99","line":29,"updated":"2015-09-08 19:01:23.000000000","message":". at EOL","commit_id":"fd991a8bc88ecf471993e43fb917a4fd4f60e11b"},{"author":{"_account_id":16258,"name":"nikesh","email":"nike.niec@gmail.com","username":"nikem"},"change_message_id":"84d9ffafff6803de9030d8a56a282b0b9bc557d1","unresolved":false,"context_lines":[{"line_number":27,"context_line":"- [C308] timeutils.isotime() must not be used (deprecated)."},{"line_number":28,"context_line":"- [C309] Unit tests should not perform logging."},{"line_number":29,"context_line":"- [C310] Check for improper use of logging format arguments"},{"line_number":30,"context_line":""},{"line_number":31,"context_line":"General"},{"line_number":32,"context_line":"-------"},{"line_number":33,"context_line":"- Use \u0027raise\u0027 instead of \u0027raise e\u0027 to preserve original traceback or exception being reraised::"}],"source_content_type":"text/x-rst","patch_set":3,"id":"da20952f_59309607","line":30,"updated":"2015-09-09 19:17:28.000000000","message":"if you do another update, then please put period here too","commit_id":"fd991a8bc88ecf471993e43fb917a4fd4f60e11b"},{"author":{"_account_id":16258,"name":"nikesh","email":"nike.niec@gmail.com","username":"nikem"},"change_message_id":"8214ebe1259de81bf29526d1973403048a5a9097","unresolved":false,"context_lines":[{"line_number":26,"context_line":"- [C307] LOG.warn is deprecated. Enforce use of LOG.warning."},{"line_number":27,"context_line":"- [C308] timeutils.isotime() must not be used (deprecated)."},{"line_number":28,"context_line":"- [C309] Unit tests should not perform logging."},{"line_number":29,"context_line":"- [C310] Check for improper use of logging format arguments"},{"line_number":30,"context_line":""},{"line_number":31,"context_line":"General"},{"line_number":32,"context_line":"-------"}],"source_content_type":"text/x-rst","patch_set":4,"id":"da20952f_ef58b859","line":29,"updated":"2015-09-09 20:14:39.000000000","message":"same as old comment in case another update","commit_id":"381e05fd54393b69a89484a29074d54bd166c9cd"}],"cinder/hacking/checks.py":[{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"dfd97943f531f030974697a1130c008627a4f881","unresolved":false,"context_lines":[{"line_number":238,"context_line":"            return None"},{"line_number":239,"context_line":""},{"line_number":240,"context_line":"    def visit_Call(self, node):"},{"line_number":241,"context_line":"        \"\"\"Look for the \u0027LOG.*\u0027 calls."},{"line_number":242,"context_line":""},{"line_number":243,"context_line":"        \"\"\""},{"line_number":244,"context_line":"        # extract the obj_name and method_name"}],"source_content_type":"text/x-python","patch_set":1,"id":"da20952f_f9bff8f9","line":241,"updated":"2015-09-03 18:03:17.000000000","message":"Put closing quotes on the same line for single line docstrings.","commit_id":"a186a4c754388d9c62f4724434ba9ba988e10a16"},{"author":{"_account_id":16258,"name":"nikesh","email":"nike.niec@gmail.com","username":"nikem"},"change_message_id":"88b209239df0672835d69e43ef7c088c6c73cf31","unresolved":false,"context_lines":[{"line_number":204,"context_line":""},{"line_number":205,"context_line":""},{"line_number":206,"context_line":"class CheckLoggingFormatArgs(BaseASTChecker):"},{"line_number":207,"context_line":"    \"\"\"Check for improper use of logging format arguments"},{"line_number":208,"context_line":""},{"line_number":209,"context_line":"    LOG.debug(\"Volume %s caught fire and is at %d degrees C and climbing\","},{"line_number":210,"context_line":"              (v[name], v[temp]))"}],"source_content_type":"text/x-python","patch_set":3,"id":"da20952f_861b5d73","line":207,"updated":"2015-09-08 18:29:35.000000000","message":"\u0027.\u0027 at EOL","commit_id":"fd991a8bc88ecf471993e43fb917a4fd4f60e11b"},{"author":{"_account_id":16258,"name":"nikesh","email":"nike.niec@gmail.com","username":"nikem"},"change_message_id":"88b209239df0672835d69e43ef7c088c6c73cf31","unresolved":false,"context_lines":[{"line_number":206,"context_line":"class CheckLoggingFormatArgs(BaseASTChecker):"},{"line_number":207,"context_line":"    \"\"\"Check for improper use of logging format arguments"},{"line_number":208,"context_line":""},{"line_number":209,"context_line":"    LOG.debug(\"Volume %s caught fire and is at %d degrees C and climbing\","},{"line_number":210,"context_line":"              (v[name], v[temp]))"},{"line_number":211,"context_line":""},{"line_number":212,"context_line":"    The second argument should not be a tuple and is easy to miss"}],"source_content_type":"text/x-python","patch_set":3,"id":"da20952f_262371a9","line":209,"updated":"2015-09-08 18:29:35.000000000","message":"\u0027.\u0027 at EOL.\nMight be not relevant here but better to use name variable in LOG message having more than one variable","commit_id":"fd991a8bc88ecf471993e43fb917a4fd4f60e11b"},{"author":{"_account_id":6601,"name":"James Carey","email":"jecarey@yerac.com","username":"jecarey"},"change_message_id":"0b3c0df3897ecab70f75e663b2b8c2d45a4fc308","unresolved":false,"context_lines":[{"line_number":213,"context_line":""},{"line_number":214,"context_line":"    \"\"\""},{"line_number":215,"context_line":""},{"line_number":216,"context_line":"    CHECK_DESC \u003d \u0027C310 Second argument in log method should not be a tuple\u0027"},{"line_number":217,"context_line":"    LOG_METHODS \u003d ["},{"line_number":218,"context_line":"        \u0027debug\u0027, \u0027info\u0027,"},{"line_number":219,"context_line":"        \u0027warn\u0027, \u0027warning\u0027,"}],"source_content_type":"text/x-python","patch_set":3,"id":"da20952f_96db947d","line":216,"updated":"2015-09-08 16:17:01.000000000","message":"Since this isn\u0027t always true (LOG.log) method, should this be changed to:\n\n     C310 replacement arguments in log method should not be in a tuple.","commit_id":"fd991a8bc88ecf471993e43fb917a4fd4f60e11b"},{"author":{"_account_id":6601,"name":"James Carey","email":"jecarey@yerac.com","username":"jecarey"},"change_message_id":"0b3c0df3897ecab70f75e663b2b8c2d45a4fc308","unresolved":false,"context_lines":[{"line_number":218,"context_line":"        \u0027debug\u0027, \u0027info\u0027,"},{"line_number":219,"context_line":"        \u0027warn\u0027, \u0027warning\u0027,"},{"line_number":220,"context_line":"        \u0027error\u0027, \u0027exception\u0027,"},{"line_number":221,"context_line":"        \u0027critical\u0027"},{"line_number":222,"context_line":"    ]"},{"line_number":223,"context_line":""},{"line_number":224,"context_line":"    def _find_name(self, node):"}],"source_content_type":"text/x-python","patch_set":3,"id":"da20952f_ed06bf1b","line":221,"updated":"2015-09-08 16:17:01.000000000","message":"For completeness, you should also have \u0027fatal\u0027 and \u0027trace\u0027","commit_id":"fd991a8bc88ecf471993e43fb917a4fd4f60e11b"},{"author":{"_account_id":16258,"name":"nikesh","email":"nike.niec@gmail.com","username":"nikem"},"change_message_id":"88b209239df0672835d69e43ef7c088c6c73cf31","unresolved":false,"context_lines":[{"line_number":239,"context_line":""},{"line_number":240,"context_line":"    def visit_Call(self, node):"},{"line_number":241,"context_line":"        \"\"\"Look for the \u0027LOG.*\u0027 calls."},{"line_number":242,"context_line":""},{"line_number":243,"context_line":"        \"\"\""},{"line_number":244,"context_line":"        # extract the obj_name and method_name"},{"line_number":245,"context_line":"        if isinstance(node.func, ast.Attribute):"}],"source_content_type":"text/x-python","patch_set":3,"id":"da20952f_f34f7dbc","line":242,"updated":"2015-09-08 18:29:35.000000000","message":"For one liner docstrings, please keep the closing \"\"\" on the same line\nhttps://www.python.org/dev/peps/pep-0008/#documentation-strings","commit_id":"fd991a8bc88ecf471993e43fb917a4fd4f60e11b"},{"author":{"_account_id":16258,"name":"nikesh","email":"nike.niec@gmail.com","username":"nikem"},"change_message_id":"8214ebe1259de81bf29526d1973403048a5a9097","unresolved":false,"context_lines":[{"line_number":209,"context_line":"    LOG.debug(\"Volume %s caught fire and is at %d degrees C and climbing.\","},{"line_number":210,"context_line":"              (\u0027volume1\u0027, 500))"},{"line_number":211,"context_line":""},{"line_number":212,"context_line":"    The second argument should not be a tuple and is easy to miss"},{"line_number":213,"context_line":""},{"line_number":214,"context_line":"    \"\"\""},{"line_number":215,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"da20952f_2f8550ce","line":212,"updated":"2015-09-09 20:14:39.000000000","message":"is this \"The second argument\" need to be change like \"any argument should not be a tuple\" ?","commit_id":"381e05fd54393b69a89484a29074d54bd166c9cd"},{"author":{"_account_id":16258,"name":"nikesh","email":"nike.niec@gmail.com","username":"nikem"},"change_message_id":"8214ebe1259de81bf29526d1973403048a5a9097","unresolved":false,"context_lines":[{"line_number":213,"context_line":""},{"line_number":214,"context_line":"    \"\"\""},{"line_number":215,"context_line":""},{"line_number":216,"context_line":"    CHECK_DESC \u003d \u0027C310 Log method arguments should not be a tuple\u0027"},{"line_number":217,"context_line":"    LOG_METHODS \u003d ["},{"line_number":218,"context_line":"        \u0027debug\u0027, \u0027info\u0027,"},{"line_number":219,"context_line":"        \u0027warn\u0027, \u0027warning\u0027,"}],"source_content_type":"text/x-python","patch_set":4,"id":"da20952f_6f62683f","line":216,"updated":"2015-09-09 20:14:39.000000000","message":"better to put period here at EOL ?","commit_id":"381e05fd54393b69a89484a29074d54bd166c9cd"},{"author":{"_account_id":16258,"name":"nikesh","email":"nike.niec@gmail.com","username":"nikem"},"change_message_id":"8214ebe1259de81bf29526d1973403048a5a9097","unresolved":false,"context_lines":[{"line_number":239,"context_line":"            return None"},{"line_number":240,"context_line":""},{"line_number":241,"context_line":"    def visit_Call(self, node):"},{"line_number":242,"context_line":"        \"\"\"Look for the \u0027LOG.*\u0027 calls.  \"\"\""},{"line_number":243,"context_line":"        # extract the obj_name and method_name"},{"line_number":244,"context_line":"        if isinstance(node.func, ast.Attribute):"},{"line_number":245,"context_line":"            obj_name \u003d self._find_name(node.func.value)"}],"source_content_type":"text/x-python","patch_set":4,"id":"da20952f_2f0eb08c","line":242,"updated":"2015-09-09 20:14:39.000000000","message":"if do another update, then\n\"\"\"Look for the \u0027LOG.*\u0027 calls.\"\"\"","commit_id":"381e05fd54393b69a89484a29074d54bd166c9cd"}],"cinder/tests/unit/test_hacking.py":[{"author":{"_account_id":16258,"name":"nikesh","email":"nike.niec@gmail.com","username":"nikem"},"change_message_id":"a677bb2d6383f2d310bcebfe5979458d44323ac6","unresolved":false,"context_lines":[{"line_number":149,"context_line":"        code \u003d \"\"\""},{"line_number":150,"context_line":"               import logging"},{"line_number":151,"context_line":"               LOG \u003d logging.getLogger()"},{"line_number":152,"context_line":"               LOG.info(\"Message without a second argument\")"},{"line_number":153,"context_line":"               LOG.critical(\"Message with %s arguments\", \u0027two\u0027)"},{"line_number":154,"context_line":"               LOG.debug(\"Volume %s caught fire and is at %d degrees C and\""},{"line_number":155,"context_line":"                         \" climbing\", \u0027volume1\u0027, 500)"}],"source_content_type":"text/x-python","patch_set":3,"id":"da20952f_09a99e90","line":152,"updated":"2015-09-08 19:01:23.000000000","message":". at end of message","commit_id":"fd991a8bc88ecf471993e43fb917a4fd4f60e11b"},{"author":{"_account_id":16258,"name":"nikesh","email":"nike.niec@gmail.com","username":"nikem"},"change_message_id":"a677bb2d6383f2d310bcebfe5979458d44323ac6","unresolved":false,"context_lines":[{"line_number":150,"context_line":"               import logging"},{"line_number":151,"context_line":"               LOG \u003d logging.getLogger()"},{"line_number":152,"context_line":"               LOG.info(\"Message without a second argument\")"},{"line_number":153,"context_line":"               LOG.critical(\"Message with %s arguments\", \u0027two\u0027)"},{"line_number":154,"context_line":"               LOG.debug(\"Volume %s caught fire and is at %d degrees C and\""},{"line_number":155,"context_line":"                         \" climbing\", \u0027volume1\u0027, 500)"},{"line_number":156,"context_line":"               \"\"\""}],"source_content_type":"text/x-python","patch_set":3,"id":"da20952f_4986b617","line":153,"updated":"2015-09-08 19:01:23.000000000","message":"same","commit_id":"fd991a8bc88ecf471993e43fb917a4fd4f60e11b"},{"author":{"_account_id":16258,"name":"nikesh","email":"nike.niec@gmail.com","username":"nikem"},"change_message_id":"a677bb2d6383f2d310bcebfe5979458d44323ac6","unresolved":false,"context_lines":[{"line_number":152,"context_line":"               LOG.info(\"Message without a second argument\")"},{"line_number":153,"context_line":"               LOG.critical(\"Message with %s arguments\", \u0027two\u0027)"},{"line_number":154,"context_line":"               LOG.debug(\"Volume %s caught fire and is at %d degrees C and\""},{"line_number":155,"context_line":"                         \" climbing\", \u0027volume1\u0027, 500)"},{"line_number":156,"context_line":"               \"\"\""},{"line_number":157,"context_line":"        self._assert_has_no_errors(code, checker)"},{"line_number":158,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"da20952f_493556a6","line":155,"updated":"2015-09-08 19:01:23.000000000","message":"same","commit_id":"fd991a8bc88ecf471993e43fb917a4fd4f60e11b"},{"author":{"_account_id":16258,"name":"nikesh","email":"nike.niec@gmail.com","username":"nikem"},"change_message_id":"a677bb2d6383f2d310bcebfe5979458d44323ac6","unresolved":false,"context_lines":[{"line_number":160,"context_line":"               import logging"},{"line_number":161,"context_line":"               LOG \u003d logging.getLogger()"},{"line_number":162,"context_line":"               LOG.debug(\"Volume %s caught fire and is at %d degrees C and\""},{"line_number":163,"context_line":"                         \" climbing\", (v[name], v[temp]))"},{"line_number":164,"context_line":"               \"\"\""},{"line_number":165,"context_line":"        errors \u003d [(4, 24, \u0027C310\u0027)]"},{"line_number":166,"context_line":"        self._assert_has_errors(code, checker, expected_errors\u003derrors)"}],"source_content_type":"text/x-python","patch_set":3,"id":"da20952f_e9778a39","line":163,"updated":"2015-09-08 19:01:23.000000000","message":"same","commit_id":"fd991a8bc88ecf471993e43fb917a4fd4f60e11b"},{"author":{"_account_id":16258,"name":"nikesh","email":"nike.niec@gmail.com","username":"nikem"},"change_message_id":"a677bb2d6383f2d310bcebfe5979458d44323ac6","unresolved":false,"context_lines":[{"line_number":169,"context_line":"               import logging"},{"line_number":170,"context_line":"               LOG \u003d logging.getLogger()"},{"line_number":171,"context_line":"               LOG.info(\"Volume %s caught fire and is at %d degrees C and\""},{"line_number":172,"context_line":"                        \" climbing\", (v[name], v[temp]))"},{"line_number":173,"context_line":"               \"\"\""},{"line_number":174,"context_line":"        errors \u003d [(4, 23, \u0027C310\u0027)]"},{"line_number":175,"context_line":"        self._assert_has_errors(code, checker, expected_errors\u003derrors)"}],"source_content_type":"text/x-python","patch_set":3,"id":"da20952f_498d5629","line":172,"updated":"2015-09-08 19:01:23.000000000","message":"same","commit_id":"fd991a8bc88ecf471993e43fb917a4fd4f60e11b"},{"author":{"_account_id":16258,"name":"nikesh","email":"nike.niec@gmail.com","username":"nikem"},"change_message_id":"a677bb2d6383f2d310bcebfe5979458d44323ac6","unresolved":false,"context_lines":[{"line_number":178,"context_line":"               import logging"},{"line_number":179,"context_line":"               LOG \u003d logging.getLogger()"},{"line_number":180,"context_line":"               LOG.warn(\"Volume %s caught fire and is at %d degrees C and\""},{"line_number":181,"context_line":"                        \" climbing\", (v[name], v[temp]))"},{"line_number":182,"context_line":"               \"\"\""},{"line_number":183,"context_line":"        errors \u003d [(4, 23, \u0027C310\u0027)]"},{"line_number":184,"context_line":"        self._assert_has_errors(code, checker, expected_errors\u003derrors)"}],"source_content_type":"text/x-python","patch_set":3,"id":"da20952f_69929a4d","line":181,"updated":"2015-09-08 19:01:23.000000000","message":"same","commit_id":"fd991a8bc88ecf471993e43fb917a4fd4f60e11b"},{"author":{"_account_id":16258,"name":"nikesh","email":"nike.niec@gmail.com","username":"nikem"},"change_message_id":"a677bb2d6383f2d310bcebfe5979458d44323ac6","unresolved":false,"context_lines":[{"line_number":187,"context_line":"               import logging"},{"line_number":188,"context_line":"               LOG \u003d logging.getLogger()"},{"line_number":189,"context_line":"               LOG.warning(\"Volume %s caught fire and is at %d degrees C and\""},{"line_number":190,"context_line":"                           \" climbing\", (v[name], v[temp]))"},{"line_number":191,"context_line":"               \"\"\""},{"line_number":192,"context_line":"        errors \u003d [(4, 26, \u0027C310\u0027)]"},{"line_number":193,"context_line":"        self._assert_has_errors(code, checker, expected_errors\u003derrors)"}],"source_content_type":"text/x-python","patch_set":3,"id":"da20952f_c9a16697","line":190,"updated":"2015-09-08 19:01:23.000000000","message":"same","commit_id":"fd991a8bc88ecf471993e43fb917a4fd4f60e11b"},{"author":{"_account_id":16258,"name":"nikesh","email":"nike.niec@gmail.com","username":"nikem"},"change_message_id":"a677bb2d6383f2d310bcebfe5979458d44323ac6","unresolved":false,"context_lines":[{"line_number":196,"context_line":"               import logging"},{"line_number":197,"context_line":"               LOG \u003d logging.getLogger()"},{"line_number":198,"context_line":"               LOG.error(\"Volume %s caught fire and is at %d degrees C and\""},{"line_number":199,"context_line":"                         \" climbing\", (v[name], v[temp]))"},{"line_number":200,"context_line":"               \"\"\""},{"line_number":201,"context_line":"        errors \u003d [(4, 24, \u0027C310\u0027)]"},{"line_number":202,"context_line":"        self._assert_has_errors(code, checker, expected_errors\u003derrors)"}],"source_content_type":"text/x-python","patch_set":3,"id":"da20952f_89ab6e75","line":199,"updated":"2015-09-08 19:01:23.000000000","message":"same","commit_id":"fd991a8bc88ecf471993e43fb917a4fd4f60e11b"},{"author":{"_account_id":16258,"name":"nikesh","email":"nike.niec@gmail.com","username":"nikem"},"change_message_id":"a677bb2d6383f2d310bcebfe5979458d44323ac6","unresolved":false,"context_lines":[{"line_number":205,"context_line":"               import logging"},{"line_number":206,"context_line":"               LOG \u003d logging.getLogger()"},{"line_number":207,"context_line":"               LOG.exception(\"Volume %s caught fire and is at %d degrees C and\""},{"line_number":208,"context_line":"                             \" climbing\", (v[name], v[temp]))"},{"line_number":209,"context_line":"               \"\"\""},{"line_number":210,"context_line":"        errors \u003d [(4, 28, \u0027C310\u0027)]"},{"line_number":211,"context_line":"        self._assert_has_errors(code, checker, expected_errors\u003derrors)"}],"source_content_type":"text/x-python","patch_set":3,"id":"da20952f_a9a8b278","line":208,"updated":"2015-09-08 19:01:23.000000000","message":"same","commit_id":"fd991a8bc88ecf471993e43fb917a4fd4f60e11b"},{"author":{"_account_id":16258,"name":"nikesh","email":"nike.niec@gmail.com","username":"nikem"},"change_message_id":"a677bb2d6383f2d310bcebfe5979458d44323ac6","unresolved":false,"context_lines":[{"line_number":214,"context_line":"               import logging"},{"line_number":215,"context_line":"               LOG \u003d logging.getLogger()"},{"line_number":216,"context_line":"               LOG.critical(\"Volume %s caught fire and is at %d degrees C and\""},{"line_number":217,"context_line":"                            \" climbing\", (v[name], v[temp]))"},{"line_number":218,"context_line":"               \"\"\""},{"line_number":219,"context_line":"        errors \u003d [(4, 27, \u0027C310\u0027)]"},{"line_number":220,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"da20952f_c9cf2656","line":217,"updated":"2015-09-08 19:01:23.000000000","message":"same","commit_id":"fd991a8bc88ecf471993e43fb917a4fd4f60e11b"},{"author":{"_account_id":8846,"name":"Hao Wang","display_name":"Hao Wang","email":"sxmatch1986@gmail.com","username":"sxmatch"},"change_message_id":"539490bf53494d3cda55340e62b2d9d48e8e86a3","unresolved":false,"context_lines":[{"line_number":218,"context_line":"               \"\"\""},{"line_number":219,"context_line":"        errors \u003d [(4, 27, \u0027C310\u0027)]"},{"line_number":220,"context_line":""},{"line_number":221,"context_line":"        self._assert_has_errors(code, checker, expected_errors\u003derrors)"},{"line_number":222,"context_line":""},{"line_number":223,"context_line":"    def test_str_unicode_exception(self):"},{"line_number":224,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"da20952f_bee0dc97","line":221,"updated":"2015-09-09 02:28:29.000000000","message":"Could we define this code message as a List? Then we can use a loop to test them all.","commit_id":"fd991a8bc88ecf471993e43fb917a4fd4f60e11b"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"2078781d508f5faccd587d9e4aa7809c5fd13722","unresolved":false,"context_lines":[{"line_number":218,"context_line":"               \"\"\""},{"line_number":219,"context_line":"        errors \u003d [(4, 27, \u0027C310\u0027)]"},{"line_number":220,"context_line":""},{"line_number":221,"context_line":"        self._assert_has_errors(code, checker, expected_errors\u003derrors)"},{"line_number":222,"context_line":""},{"line_number":223,"context_line":"    def test_str_unicode_exception(self):"},{"line_number":224,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"da20952f_79df9a0c","line":221,"in_reply_to":"da20952f_1e81a4fb","updated":"2015-09-09 19:01:47.000000000","message":"Ddt would be a good option here.","commit_id":"fd991a8bc88ecf471993e43fb917a4fd4f60e11b"},{"author":{"_account_id":4159,"name":"Cory Stone","email":"corystone@gmail.com","username":"corystone"},"change_message_id":"11eb8031ae7c01f0d28f1c29a2dc7abd7ef4f295","unresolved":false,"context_lines":[{"line_number":218,"context_line":"               \"\"\""},{"line_number":219,"context_line":"        errors \u003d [(4, 27, \u0027C310\u0027)]"},{"line_number":220,"context_line":""},{"line_number":221,"context_line":"        self._assert_has_errors(code, checker, expected_errors\u003derrors)"},{"line_number":222,"context_line":""},{"line_number":223,"context_line":"    def test_str_unicode_exception(self):"},{"line_number":224,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"da20952f_1e81a4fb","line":221,"in_reply_to":"da20952f_bee0dc97","updated":"2015-09-09 18:34:07.000000000","message":"I\u0027m not sure a giant list of code/error tuples would be easier to read.","commit_id":"fd991a8bc88ecf471993e43fb917a4fd4f60e11b"},{"author":{"_account_id":16258,"name":"nikesh","email":"nike.niec@gmail.com","username":"nikem"},"change_message_id":"8214ebe1259de81bf29526d1973403048a5a9097","unresolved":false,"context_lines":[{"line_number":159,"context_line":"        code \u003d \"\"\""},{"line_number":160,"context_line":"               import logging"},{"line_number":161,"context_line":"               LOG \u003d logging.getLogger()"},{"line_number":162,"context_line":"               LOG.{0}(\"Volume %s caught fire and is at %d degrees C and \""},{"line_number":163,"context_line":"                      \"climbing.\", (\u0027volume1\u0027, 500))"},{"line_number":164,"context_line":"               \"\"\""},{"line_number":165,"context_line":"        for method in checker.LOG_METHODS:"}],"source_content_type":"text/x-python","patch_set":4,"id":"da20952f_2f14704b","line":162,"updated":"2015-09-09 20:14:39.000000000","message":"i am not familiar with LOG.{0} so hope its not a typo.","commit_id":"381e05fd54393b69a89484a29074d54bd166c9cd"}],"cinder/volume/drivers/netapp/eseries/library.py":[{"author":{"_account_id":4523,"name":"Eric Harney","email":"eharney@redhat.com","username":"eharney"},"change_message_id":"fc26b81063b317284e274cfda738979ac9b0ddc0","unresolved":false,"context_lines":[{"line_number":1183,"context_line":"                        self._client.delete_volume(vol[\u0027volumeRef\u0027])"},{"line_number":1184,"context_line":"                    except exception.NetAppDriverException as e:"},{"line_number":1185,"context_line":"                        LOG.debug(\"Error deleting vol with label %s: %s\","},{"line_number":1186,"context_line":"                                  label, e)"},{"line_number":1187,"context_line":"        finally:"},{"line_number":1188,"context_line":"            na_utils.set_safe_attr(self, \u0027clean_job_running\u0027, False)"},{"line_number":1189,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"da20952f_54b93deb","line":1186,"updated":"2015-09-09 19:25:58.000000000","message":"This isn\u0027t the right fix for this, the message should be using named interpolation.\n\nhttp://docs.openstack.org/developer/oslo.i18n/guidelines.html#adding-variables-to-translated-messages","commit_id":"381e05fd54393b69a89484a29074d54bd166c9cd"}]}
