)]}'
{"ironic_python_agent/hardware.py":[{"author":{"_account_id":4571,"name":"Steve Baker","email":"sbaker@redhat.com","username":"steve-stevebaker"},"change_message_id":"b0ccbd4eb71655cb79e9375f1810195915cf4e74","unresolved":false,"context_lines":[{"line_number":2057,"context_line":"                    continue"},{"line_number":2058,"context_line":"                else:"},{"line_number":2059,"context_line":"                    LOG.warning(\"Failed to examine device %(name)s: %(err)s\","},{"line_number":2060,"context_line":"                                {\u0027device\u0027: blk.name, \u0027err\u0027: e})"},{"line_number":2061,"context_line":"                    continue"},{"line_number":2062,"context_line":"            try:"},{"line_number":2063,"context_line":"                utils.execute(\u0027mdadm\u0027, \u0027--zero-superblock\u0027, blk.name)"}],"source_content_type":"text/x-python","patch_set":2,"id":"3f65232a_812ba492","line":2060,"updated":"2020-10-23 02:24:03.000000000","message":"message has \u0027name\u0027, dict has \u0027device\u0027","commit_id":"150323001417047371887ab86a8ed8504c704152"},{"author":{"_account_id":32539,"name":"Emmanouil Bagakis","email":"manos.bagakis@gmail.com","username":"ebagakis"},"change_message_id":"736ff463dc42ee2d6289be55b9cf93803759e714","unresolved":false,"context_lines":[{"line_number":2057,"context_line":"                    continue"},{"line_number":2058,"context_line":"                else:"},{"line_number":2059,"context_line":"                    LOG.warning(\"Failed to examine device %(name)s: %(err)s\","},{"line_number":2060,"context_line":"                                {\u0027device\u0027: blk.name, \u0027err\u0027: e})"},{"line_number":2061,"context_line":"                    continue"},{"line_number":2062,"context_line":"            try:"},{"line_number":2063,"context_line":"                utils.execute(\u0027mdadm\u0027, \u0027--zero-superblock\u0027, blk.name)"}],"source_content_type":"text/x-python","patch_set":2,"id":"3f65232a_07efa484","line":2060,"in_reply_to":"3f65232a_812ba492","updated":"2020-10-23 07:36:50.000000000","message":"Done","commit_id":"150323001417047371887ab86a8ed8504c704152"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"d19731accadff31a18b07a253bb65a604d470848","unresolved":false,"context_lines":[{"line_number":326,"context_line":"                      *component_devices)"},{"line_number":327,"context_line":"    except processutils.ProcessExecutionError as e:"},{"line_number":328,"context_line":"        error_msg \u003d (\u0027Could not restart md device %(dev)s: %(err)s\u0027,"},{"line_number":329,"context_line":"                     {\u0027dev\u0027: raid_device, \u0027err\u0027: e})"},{"line_number":330,"context_line":"        LOG.error(error_msg)"},{"line_number":331,"context_line":"        raise errors.CommandExecutionError(error_msg)"},{"line_number":332,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"1f621f24_b2cba970","line":329,"updated":"2020-10-28 16:42:29.000000000","message":"This change is invalid","commit_id":"58cfbcc3c08d7cff4bf755dfe33669796b1452e8"},{"author":{"_account_id":32539,"name":"Emmanouil Bagakis","email":"manos.bagakis@gmail.com","username":"ebagakis"},"change_message_id":"388dcca5e8de93415aef88bc852208d72ba59a30","unresolved":false,"context_lines":[{"line_number":326,"context_line":"                      *component_devices)"},{"line_number":327,"context_line":"    except processutils.ProcessExecutionError as e:"},{"line_number":328,"context_line":"        error_msg \u003d (\u0027Could not restart md device %(dev)s: %(err)s\u0027,"},{"line_number":329,"context_line":"                     {\u0027dev\u0027: raid_device, \u0027err\u0027: e})"},{"line_number":330,"context_line":"        LOG.error(error_msg)"},{"line_number":331,"context_line":"        raise errors.CommandExecutionError(error_msg)"},{"line_number":332,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"1f621f24_918e5076","line":329,"in_reply_to":"1f621f24_b2cba970","updated":"2020-10-30 09:31:37.000000000","message":"Done","commit_id":"58cfbcc3c08d7cff4bf755dfe33669796b1452e8"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"d19731accadff31a18b07a253bb65a604d470848","unresolved":false,"context_lines":[{"line_number":1241,"context_line":"                msg \u003d (\u0027Failed to invoke erase of device %(device)s \u0027"},{"line_number":1242,"context_line":"                       \u0027as the device is flagged read-only, and the \u0027"},{"line_number":1243,"context_line":"                       \u0027conductor has not signaled this is a permitted \u0027"},{"line_number":1244,"context_line":"                       \u0027case.\u0027, {\u0027device\u0027: block_device.name})"},{"line_number":1245,"context_line":"                LOG.error(msg)"},{"line_number":1246,"context_line":"                raise errors.BlockDeviceEraseError(msg)"},{"line_number":1247,"context_line":"        # Note(TheJulia) Use try/except to capture and log the failure"}],"source_content_type":"text/x-python","patch_set":3,"id":"1f621f24_12c9bd77","line":1244,"updated":"2020-10-28 16:42:29.000000000","message":"same","commit_id":"58cfbcc3c08d7cff4bf755dfe33669796b1452e8"},{"author":{"_account_id":32539,"name":"Emmanouil Bagakis","email":"manos.bagakis@gmail.com","username":"ebagakis"},"change_message_id":"388dcca5e8de93415aef88bc852208d72ba59a30","unresolved":false,"context_lines":[{"line_number":1241,"context_line":"                msg \u003d (\u0027Failed to invoke erase of device %(device)s \u0027"},{"line_number":1242,"context_line":"                       \u0027as the device is flagged read-only, and the \u0027"},{"line_number":1243,"context_line":"                       \u0027conductor has not signaled this is a permitted \u0027"},{"line_number":1244,"context_line":"                       \u0027case.\u0027, {\u0027device\u0027: block_device.name})"},{"line_number":1245,"context_line":"                LOG.error(msg)"},{"line_number":1246,"context_line":"                raise errors.BlockDeviceEraseError(msg)"},{"line_number":1247,"context_line":"        # Note(TheJulia) Use try/except to capture and log the failure"}],"source_content_type":"text/x-python","patch_set":3,"id":"1f621f24_f1e86417","line":1244,"in_reply_to":"1f621f24_12c9bd77","updated":"2020-10-30 09:31:37.000000000","message":"Done","commit_id":"58cfbcc3c08d7cff4bf755dfe33669796b1452e8"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"d19731accadff31a18b07a253bb65a604d470848","unresolved":false,"context_lines":[{"line_number":1259,"context_line":"                            \u0027falling back to shred: %s\u0027, e)"},{"line_number":1260,"context_line":"            else:"},{"line_number":1261,"context_line":"                msg \u003d (\u0027Failed to invoke ata_erase, \u0027"},{"line_number":1262,"context_line":"                       \u0027fallback to shred is not enabled: %s\u0027, e)"},{"line_number":1263,"context_line":"                LOG.error(msg)"},{"line_number":1264,"context_line":"                raise errors.IncompatibleHardwareMethodError(msg)"},{"line_number":1265,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"1f621f24_f2c5215d","line":1262,"updated":"2020-10-28 16:42:29.000000000","message":"same","commit_id":"58cfbcc3c08d7cff4bf755dfe33669796b1452e8"},{"author":{"_account_id":32539,"name":"Emmanouil Bagakis","email":"manos.bagakis@gmail.com","username":"ebagakis"},"change_message_id":"388dcca5e8de93415aef88bc852208d72ba59a30","unresolved":false,"context_lines":[{"line_number":1259,"context_line":"                            \u0027falling back to shred: %s\u0027, e)"},{"line_number":1260,"context_line":"            else:"},{"line_number":1261,"context_line":"                msg \u003d (\u0027Failed to invoke ata_erase, \u0027"},{"line_number":1262,"context_line":"                       \u0027fallback to shred is not enabled: %s\u0027, e)"},{"line_number":1263,"context_line":"                LOG.error(msg)"},{"line_number":1264,"context_line":"                raise errors.IncompatibleHardwareMethodError(msg)"},{"line_number":1265,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"1f621f24_d1ed6826","line":1262,"in_reply_to":"1f621f24_f2c5215d","updated":"2020-10-30 09:31:37.000000000","message":"Done","commit_id":"58cfbcc3c08d7cff4bf755dfe33669796b1452e8"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"d19731accadff31a18b07a253bb65a604d470848","unresolved":false,"context_lines":[{"line_number":1365,"context_line":"            out, _ \u003d utils.execute(\u0027lsblk\u0027, \u0027--fs\u0027, \u0027--noheadings\u0027,"},{"line_number":1366,"context_line":"                                   block_device.name)"},{"line_number":1367,"context_line":"        except processutils.ProcessExecutionError as e:"},{"line_number":1368,"context_line":"            LOG.warning(\"Could not determine if %(name)s is a RAID member:\""},{"line_number":1369,"context_line":"                        \"%(err)s\","},{"line_number":1370,"context_line":"                        {\u0027name\u0027: block_device.name, \"err\": e})"},{"line_number":1371,"context_line":"            return True"}],"source_content_type":"text/x-python","patch_set":3,"id":"1f621f24_52a055a6","line":1368,"updated":"2020-10-28 16:42:29.000000000","message":"Missing space after :","commit_id":"58cfbcc3c08d7cff4bf755dfe33669796b1452e8"},{"author":{"_account_id":32539,"name":"Emmanouil Bagakis","email":"manos.bagakis@gmail.com","username":"ebagakis"},"change_message_id":"388dcca5e8de93415aef88bc852208d72ba59a30","unresolved":false,"context_lines":[{"line_number":1365,"context_line":"            out, _ \u003d utils.execute(\u0027lsblk\u0027, \u0027--fs\u0027, \u0027--noheadings\u0027,"},{"line_number":1366,"context_line":"                                   block_device.name)"},{"line_number":1367,"context_line":"        except processutils.ProcessExecutionError as e:"},{"line_number":1368,"context_line":"            LOG.warning(\"Could not determine if %(name)s is a RAID member:\""},{"line_number":1369,"context_line":"                        \"%(err)s\","},{"line_number":1370,"context_line":"                        {\u0027name\u0027: block_device.name, \"err\": e})"},{"line_number":1371,"context_line":"            return True"}],"source_content_type":"text/x-python","patch_set":3,"id":"1f621f24_51d95881","line":1368,"in_reply_to":"1f621f24_52a055a6","updated":"2020-10-30 09:31:37.000000000","message":"Done","commit_id":"58cfbcc3c08d7cff4bf755dfe33669796b1452e8"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"57366e8a130cb238336f3322068971a21dbdf118","unresolved":false,"context_lines":[{"line_number":1255,"context_line":"            execute_shred \u003d info.get("},{"line_number":1256,"context_line":"                \u0027agent_continue_if_ata_erase_failed\u0027, False)"},{"line_number":1257,"context_line":"            if execute_shred:"},{"line_number":1258,"context_line":"                LOG.warning(\u0027Failed to invoke ata_erase, \u0027"},{"line_number":1259,"context_line":"                            \u0027falling back to shred: %s\u0027 %e)"},{"line_number":1260,"context_line":"            else:"},{"line_number":1261,"context_line":"                msg \u003d (\u0027Failed to invoke ata_erase, \u0027"}],"source_content_type":"text/x-python","patch_set":4,"id":"1f621f24_c00473c9","line":1258,"updated":"2020-10-30 12:24:02.000000000","message":"pep8: H904: String interpolation should be delayed to be handled by the logging code, rather than being done at the point of the logging call. Use \u0027,\u0027 instead of \u0027%\u0027.","commit_id":"36eecd206ece098be8283bb763441cb7150a9708"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"57366e8a130cb238336f3322068971a21dbdf118","unresolved":false,"context_lines":[{"line_number":1256,"context_line":"                \u0027agent_continue_if_ata_erase_failed\u0027, False)"},{"line_number":1257,"context_line":"            if execute_shred:"},{"line_number":1258,"context_line":"                LOG.warning(\u0027Failed to invoke ata_erase, \u0027"},{"line_number":1259,"context_line":"                            \u0027falling back to shred: %s\u0027 %e)"},{"line_number":1260,"context_line":"            else:"},{"line_number":1261,"context_line":"                msg \u003d (\u0027Failed to invoke ata_erase, \u0027"},{"line_number":1262,"context_line":"                       \u0027fallback to shred is not enabled: %s\u0027 %e)"}],"source_content_type":"text/x-python","patch_set":4,"id":"1f621f24_a00977de","line":1259,"updated":"2020-10-30 12:24:02.000000000","message":"pep8: E225 missing whitespace around operator","commit_id":"36eecd206ece098be8283bb763441cb7150a9708"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"57366e8a130cb238336f3322068971a21dbdf118","unresolved":false,"context_lines":[{"line_number":1259,"context_line":"                            \u0027falling back to shred: %s\u0027 %e)"},{"line_number":1260,"context_line":"            else:"},{"line_number":1261,"context_line":"                msg \u003d (\u0027Failed to invoke ata_erase, \u0027"},{"line_number":1262,"context_line":"                       \u0027fallback to shred is not enabled: %s\u0027 %e)"},{"line_number":1263,"context_line":"                LOG.error(msg)"},{"line_number":1264,"context_line":"                raise errors.IncompatibleHardwareMethodError(msg)"},{"line_number":1265,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"1f621f24_000f8be1","line":1262,"updated":"2020-10-30 12:24:02.000000000","message":"pep8: E225 missing whitespace around operator","commit_id":"36eecd206ece098be8283bb763441cb7150a9708"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"065e836e61a1fffd40ee450bec399b56282c7164","unresolved":false,"context_lines":[{"line_number":1259,"context_line":"                            \u0027falling back to shred: %s\u0027, e)"},{"line_number":1260,"context_line":"            else:"},{"line_number":1261,"context_line":"                msg \u003d (\u0027Failed to invoke ata_erase, \u0027"},{"line_number":1262,"context_line":"                       \u0027fallback to shred is not enabled: %s\u0027, e)"},{"line_number":1263,"context_line":"                LOG.error(msg)"},{"line_number":1264,"context_line":"                raise errors.IncompatibleHardwareMethodError(msg)"},{"line_number":1265,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"1f621f24_c3747038","line":1262,"updated":"2020-11-01 11:10:35.000000000","message":"This place still needs updating","commit_id":"dff999637f4b42f810658cbe3a612453fabb7dc7"},{"author":{"_account_id":32539,"name":"Emmanouil Bagakis","email":"manos.bagakis@gmail.com","username":"ebagakis"},"change_message_id":"6b88032449f68f93714a337102c399e80510fa33","unresolved":false,"context_lines":[{"line_number":1259,"context_line":"                            \u0027falling back to shred: %s\u0027, e)"},{"line_number":1260,"context_line":"            else:"},{"line_number":1261,"context_line":"                msg \u003d (\u0027Failed to invoke ata_erase, \u0027"},{"line_number":1262,"context_line":"                       \u0027fallback to shred is not enabled: %s\u0027, e)"},{"line_number":1263,"context_line":"                LOG.error(msg)"},{"line_number":1264,"context_line":"                raise errors.IncompatibleHardwareMethodError(msg)"},{"line_number":1265,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"1f621f24_4d2b53ea","line":1262,"in_reply_to":"1f621f24_c3747038","updated":"2020-11-03 11:22:53.000000000","message":"this msg variable is also used in line 1264 for the raise errors. Can you propose a solution for this?\nShall I replace the raise error parameter in the same way LOG.warning was treated?","commit_id":"dff999637f4b42f810658cbe3a612453fabb7dc7"},{"author":{"_account_id":24828,"name":"Kaifeng Wang","email":"kaifeng.w@gmail.com","username":"wangkf"},"change_message_id":"be7a80c66c97751056d8c4a48081bb66db852a56","unresolved":false,"context_lines":[{"line_number":285,"context_line":""},{"line_number":286,"context_line":"        device \u003d utils.extract_device(part)"},{"line_number":287,"context_line":"        if not device:"},{"line_number":288,"context_line":"            raise errors.SoftwareRAIDError("},{"line_number":289,"context_line":"                \u0027Could not get holder disks of %s: unexpected pattern \u0027"},{"line_number":290,"context_line":"                \u0027for partition %s\u0027 % (raid_device, part))"},{"line_number":291,"context_line":"        holder_disks.append(device)"}],"source_content_type":"text/x-python","patch_set":6,"id":"1f621f24_2d2b7782","line":288,"updated":"2020-11-03 10:58:23.000000000","message":"this change is not actually required, not an issue though.","commit_id":"9b57a3c58a2d26b652408142997c5a4979dc5fd4"},{"author":{"_account_id":24828,"name":"Kaifeng Wang","email":"kaifeng.w@gmail.com","username":"wangkf"},"change_message_id":"be7a80c66c97751056d8c4a48081bb66db852a56","unresolved":false,"context_lines":[{"line_number":1259,"context_line":"                            \u0027falling back to shred: %s\u0027, e)"},{"line_number":1260,"context_line":"            else:"},{"line_number":1261,"context_line":"                msg \u003d (\u0027Failed to invoke ata_erase, \u0027"},{"line_number":1262,"context_line":"                       \u0027fallback to shred is not enabled: %s\u0027 % e)"},{"line_number":1263,"context_line":"                LOG.error(msg)"},{"line_number":1264,"context_line":"                raise errors.IncompatibleHardwareMethodError(msg)"},{"line_number":1265,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"1f621f24_ad3667e6","line":1262,"updated":"2020-11-03 10:58:23.000000000","message":"can be changed as above.","commit_id":"9b57a3c58a2d26b652408142997c5a4979dc5fd4"},{"author":{"_account_id":24828,"name":"Kaifeng Wang","email":"kaifeng.w@gmail.com","username":"wangkf"},"change_message_id":"0b4090459c017d4e3178e4da16c0d0d88e25b708","unresolved":false,"context_lines":[{"line_number":1259,"context_line":"                            \u0027falling back to shred: %s\u0027, e)"},{"line_number":1260,"context_line":"            else:"},{"line_number":1261,"context_line":"                msg \u003d (\u0027Failed to invoke ata_erase, \u0027"},{"line_number":1262,"context_line":"                       \u0027fallback to shred is not enabled: %s\u0027 % e)"},{"line_number":1263,"context_line":"                LOG.error(msg)"},{"line_number":1264,"context_line":"                raise errors.IncompatibleHardwareMethodError(msg)"},{"line_number":1265,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"1f621f24_4d31930b","line":1262,"in_reply_to":"1f621f24_4d14f3a0","updated":"2020-11-03 11:35:41.000000000","message":"hmm, I didn\u0027t notice the exception below, please ignore this comment.","commit_id":"9b57a3c58a2d26b652408142997c5a4979dc5fd4"},{"author":{"_account_id":32539,"name":"Emmanouil Bagakis","email":"manos.bagakis@gmail.com","username":"ebagakis"},"change_message_id":"6b88032449f68f93714a337102c399e80510fa33","unresolved":false,"context_lines":[{"line_number":1259,"context_line":"                            \u0027falling back to shred: %s\u0027, e)"},{"line_number":1260,"context_line":"            else:"},{"line_number":1261,"context_line":"                msg \u003d (\u0027Failed to invoke ata_erase, \u0027"},{"line_number":1262,"context_line":"                       \u0027fallback to shred is not enabled: %s\u0027 % e)"},{"line_number":1263,"context_line":"                LOG.error(msg)"},{"line_number":1264,"context_line":"                raise errors.IncompatibleHardwareMethodError(msg)"},{"line_number":1265,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"1f621f24_4d14f3a0","line":1262,"in_reply_to":"1f621f24_ad3667e6","updated":"2020-11-03 11:22:53.000000000","message":"this msg variable is also used in line 1264 for the raise errors. Can you propose a solution for this?\nShall I replace the raise error parameter in the same way LOG.warning was treated?","commit_id":"9b57a3c58a2d26b652408142997c5a4979dc5fd4"},{"author":{"_account_id":24828,"name":"Kaifeng Wang","email":"kaifeng.w@gmail.com","username":"wangkf"},"change_message_id":"be7a80c66c97751056d8c4a48081bb66db852a56","unresolved":false,"context_lines":[{"line_number":1308,"context_line":""},{"line_number":1309,"context_line":"        if erase_errors:"},{"line_number":1310,"context_line":"            excpt_msg \u003d (\u0027Failed to erase the metadata on the device(s): %s\u0027,"},{"line_number":1311,"context_line":"                         \u0027; \u0027.join([\u0027\"%s\": %s\u0027 % (k, v)"},{"line_number":1312,"context_line":"                                    for k, v in erase_errors.items()]))"},{"line_number":1313,"context_line":"            raise errors.BlockDeviceEraseError(excpt_msg)"},{"line_number":1314,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"1f621f24_2d79b792","line":1311,"updated":"2020-11-03 10:58:23.000000000","message":"this change is incorrect, it makes the msg into a tuple, we should keep it as is.","commit_id":"9b57a3c58a2d26b652408142997c5a4979dc5fd4"},{"author":{"_account_id":24828,"name":"Kaifeng Wang","email":"kaifeng.w@gmail.com","username":"wangkf"},"change_message_id":"be7a80c66c97751056d8c4a48081bb66db852a56","unresolved":false,"context_lines":[{"line_number":1798,"context_line":"                continue"},{"line_number":1799,"context_line":"        if with_parts:"},{"line_number":1800,"context_line":"            msg \u003d (\"Partitions detected on devices %s during RAID config\","},{"line_number":1801,"context_line":"                   \u0027, \u0027.join(with_parts))"},{"line_number":1802,"context_line":"            raise errors.SoftwareRAIDError(msg)"},{"line_number":1803,"context_line":""},{"line_number":1804,"context_line":"        partition_table_type \u003d utils.get_partition_table_type_from_specs(node)"}],"source_content_type":"text/x-python","patch_set":6,"id":"1f621f24_2d9ed7b7","line":1801,"updated":"2020-11-03 10:58:23.000000000","message":"this change is incorrect, we should keep it as is.","commit_id":"9b57a3c58a2d26b652408142997c5a4979dc5fd4"},{"author":{"_account_id":24828,"name":"Kaifeng Wang","email":"kaifeng.w@gmail.com","username":"wangkf"},"change_message_id":"da626d911b6dfb76d2e7f8ade0d5169889cbaa75","unresolved":false,"context_lines":[{"line_number":1259,"context_line":"                            \u0027falling back to shred: %s\u0027, e)"},{"line_number":1260,"context_line":"            else:"},{"line_number":1261,"context_line":"                msg \u003d (\u0027Failed to invoke ata_erase, \u0027"},{"line_number":1262,"context_line":"                       \u0027fallback to shred is not enabled: %s\u0027, e)"},{"line_number":1263,"context_line":"                LOG.error(msg)"},{"line_number":1264,"context_line":"                raise errors.IncompatibleHardwareMethodError(msg)"},{"line_number":1265,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"1f621f24_33791693","line":1262,"range":{"start_line":1262,"start_character":61,"end_line":1262,"end_character":62},"updated":"2020-11-03 12:52:50.000000000","message":"Sorry, probably the previous comment is misleading, this is a case that the string is used both as logging and exception message, thus we need to expand the string here.\n\ns/,/%/ will do.","commit_id":"86f62126cca24f8dc7985b8aef993d79b6a7b512"}]}
