)]}'
{"nova/virt/libvirt/driver.py":[{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"ea678e314d91b8b7e2954d43f6141a275241991f","unresolved":false,"context_lines":[{"line_number":2655,"context_line":"            libvirt_utils.chown(path, os.getuid())"},{"line_number":2656,"context_line":"            with libvirt_utils.file_open(path, \u0027rb\u0027) as fp:"},{"line_number":2657,"context_line":"                read_log_data, remaining \u003d utils.last_bytes(fp, bytes_to_read)"},{"line_number":2658,"context_line":"                # We need the log file content in chronological order,"},{"line_number":2659,"context_line":"                # that\u0027s why we *prepend* the log data."},{"line_number":2660,"context_line":"                log_data \u003d read_log_data + log_data"},{"line_number":2661,"context_line":"                bytes_to_read -\u003d len(read_log_data)"},{"line_number":2662,"context_line":"                path \u003d console_log + \".\" + str(i)"},{"line_number":2663,"context_line":"                i +\u003d 1"}],"source_content_type":"text/x-python","patch_set":4,"id":"9a629dbe_071c1011","line":2660,"range":{"start_line":2658,"start_character":16,"end_line":2660,"end_character":51},"updated":"2016-11-09 12:12:41.000000000","message":"I guess the same thing can be said of the code as it exists, but how big can this get? We\u0027re not going to try read in gigabytes of data, right?","commit_id":"3097886674192737c23fa7b4161818be3672d927"},{"author":{"_account_id":1779,"name":"Daniel Berrange","email":"berrange@redhat.com","username":"berrange"},"change_message_id":"11b83b2f639dba294bc0b578bc69edd2c5fbc685","unresolved":false,"context_lines":[{"line_number":2655,"context_line":"            libvirt_utils.chown(path, os.getuid())"},{"line_number":2656,"context_line":"            with libvirt_utils.file_open(path, \u0027rb\u0027) as fp:"},{"line_number":2657,"context_line":"                read_log_data, remaining \u003d utils.last_bytes(fp, bytes_to_read)"},{"line_number":2658,"context_line":"                # We need the log file content in chronological order,"},{"line_number":2659,"context_line":"                # that\u0027s why we *prepend* the log data."},{"line_number":2660,"context_line":"                log_data \u003d read_log_data + log_data"},{"line_number":2661,"context_line":"                bytes_to_read -\u003d len(read_log_data)"},{"line_number":2662,"context_line":"                path \u003d console_log + \".\" + str(i)"},{"line_number":2663,"context_line":"                i +\u003d 1"}],"source_content_type":"text/x-python","patch_set":4,"id":"9a629dbe_875bc086","line":2660,"range":{"start_line":2658,"start_character":16,"end_line":2660,"end_character":51},"in_reply_to":"9a629dbe_071c1011","updated":"2016-11-09 12:20:16.000000000","message":"It is configurable in libvirt with a default of 128kb per file and max 3 backup files.","commit_id":"3097886674192737c23fa7b4161818be3672d927"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"212dd3e33c7a762289d83c8453f759f0065c1b7c","unresolved":false,"context_lines":[{"line_number":2661,"context_line":"                bytes_to_read -\u003d len(read_log_data)"},{"line_number":2662,"context_line":"                path \u003d console_log + \".\" + str(i)"},{"line_number":2663,"context_line":"                i +\u003d 1"},{"line_number":2664,"context_line":"            if remaining \u003e 0:"},{"line_number":2665,"context_line":"                LOG.info(_LI(\u0027Truncated console log returned, \u0027"},{"line_number":2666,"context_line":"                             \u0027%d bytes ignored\u0027), remaining,"},{"line_number":2667,"context_line":"                         instance\u003dinstance)"},{"line_number":2668,"context_line":"        return log_data"},{"line_number":2669,"context_line":""},{"line_number":2670,"context_line":"    def get_console_output(self, context, instance):"}],"source_content_type":"text/x-python","patch_set":5,"id":"9a629dbe_e9499c61","line":2667,"range":{"start_line":2664,"start_character":12,"end_line":2667,"end_character":43},"updated":"2016-11-09 19:16:41.000000000","message":"Shouldn\u0027t this be pulled out of the while loop?","commit_id":"e781123e50ac2225694f9ce8f3a46a9734c6f8bd"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"819487a53e6034f976d8a4f7c49cfb8a99b8a999","unresolved":false,"context_lines":[{"line_number":2661,"context_line":"                bytes_to_read -\u003d len(read_log_data)"},{"line_number":2662,"context_line":"                path \u003d console_log + \".\" + str(i)"},{"line_number":2663,"context_line":"                i +\u003d 1"},{"line_number":2664,"context_line":"            if remaining \u003e 0:"},{"line_number":2665,"context_line":"                LOG.info(_LI(\u0027Truncated console log returned, \u0027"},{"line_number":2666,"context_line":"                             \u0027%d bytes ignored\u0027), remaining,"},{"line_number":2667,"context_line":"                         instance\u003dinstance)"},{"line_number":2668,"context_line":"        return log_data"},{"line_number":2669,"context_line":""},{"line_number":2670,"context_line":"    def get_console_output(self, context, instance):"}],"source_content_type":"text/x-python","patch_set":5,"id":"9a629dbe_c9c3f887","line":2667,"range":{"start_line":2664,"start_character":12,"end_line":2667,"end_character":43},"in_reply_to":"9a629dbe_e9499c61","updated":"2016-11-09 19:19:31.000000000","message":"Or if this means, we read a chunk of this given log file, but need to move on, and the while loop is going to end because bytes_to_read is going to be \u003c\u003d 0, then maybe we should include the current path in the info message. For example, I\u0027ve got 3 log files, I\u0027ve read the full first one, but only got 1/2 way through the 2nd one before MAX_CONSOLE_BYTES were hit, we could note the 2nd console log is where we ended.\n\nHowever, the more I think about it, maybe we don\u0027t really care where it ended up, we just say we didn\u0027t get the whole thing.","commit_id":"e781123e50ac2225694f9ce8f3a46a9734c6f8bd"}]}
