)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":170,"name":"Mike Perez","email":"thingee@gmail.com","username":"thingee"},"change_message_id":"c25673000ef78ce10dd942246b5a101ea8665d27","unresolved":false,"context_lines":[{"line_number":15,"context_line":"class. Test cases and a libvirt.utils predicate are also included."},{"line_number":16,"context_line":""},{"line_number":17,"context_line":"Change-Id: Ie45ac1dcb60d8a408af7c1670ed43ae95e811f9e"},{"line_number":18,"context_line":"Fixes: bug 1257829"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":4,"id":"AAAATn%2F9VUI%3D","line":18,"updated":"2013-12-12 19:18:05.000000000","message":"Closes-bug: \u003cbug_number\u003e ... https://wiki.openstack.org/wiki/GitCommitMessages#Including_external_references","commit_id":"8825460ebd00de0948276ed6bccc15e52e9dcf61"},{"author":{"_account_id":7764,"name":"Peter Hamilton","email":"peter.hamilton@jhuapl.edu","username":"Peter"},"change_message_id":"5fb424b75ca84feb5975f2f75d9c4c5595a86b78","unresolved":false,"context_lines":[{"line_number":15,"context_line":"class. Test cases and a libvirt.utils predicate are also included."},{"line_number":16,"context_line":""},{"line_number":17,"context_line":"Change-Id: Ie45ac1dcb60d8a408af7c1670ed43ae95e811f9e"},{"line_number":18,"context_line":"Fixes: bug 1257829"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":4,"id":"AAAATn%2F9TNw%3D","line":18,"in_reply_to":"AAAATn%2F9VUI%3D","updated":"2013-12-12 21:44:24.000000000","message":"Done","commit_id":"8825460ebd00de0948276ed6bccc15e52e9dcf61"}],"nova/openstack/common/imageutils.py":[{"author":{"_account_id":1779,"name":"Daniel Berrange","email":"berrange@redhat.com","username":"berrange"},"change_message_id":"8802326e4fe6ed829ed58042cc37403fb6921cb7","unresolved":false,"context_lines":[{"line_number":1,"context_line":"# vim: tabstop\u003d4 shiftwidth\u003d4 softtabstop\u003d4"},{"line_number":2,"context_line":""},{"line_number":3,"context_line":"# Copyright 2010 United States Government as represented by the"},{"line_number":4,"context_line":"# Administrator of the National Aeronautics and Space Administration."},{"line_number":5,"context_line":"# All Rights Reserved."}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAATn%2F9Gss%3D","side":"PARENT","line":2,"updated":"2013-12-16 18:58:07.000000000","message":"Why have you removed this ?","commit_id":"6a1667424a12b192402276ee81eb26a87bbb08f8"},{"author":{"_account_id":1779,"name":"Daniel Berrange","email":"berrange@redhat.com","username":"berrange"},"change_message_id":"8802326e4fe6ed829ed58042cc37403fb6921cb7","unresolved":false,"context_lines":[{"line_number":29,"context_line":"    BACKING_FILE_RE \u003d re.compile((r\"^(.*?)\\s*\\(actual\\s+path\\s*:\""},{"line_number":30,"context_line":"                                  r\"\\s+(.*?)\\)\\s*$\"), re.I)"},{"line_number":31,"context_line":"    TOP_LEVEL_RE \u003d re.compile(r\"^([\\w\\d\\s\\_\\-]+):(.*)$\")"},{"line_number":32,"context_line":"    SIZE_RE \u003d re.compile(r\"(\\d+)(\\w+)?(\\s*\\(\\s*(\\d+)\\s+bytes\\s*\\))?\", re.I)"},{"line_number":33,"context_line":""},{"line_number":34,"context_line":"    def __init__(self, cmd_output\u003dNone):"},{"line_number":35,"context_line":"        details \u003d self._parse(cmd_output or \u0027\u0027)"}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAATn%2F9Gso%3D","line":32,"updated":"2013-12-16 18:58:07.000000000","message":"Why are you changing this - it appears unrelated to the task of fixing the typo wrt encryption","commit_id":"4d60b2b0cb46fc3ab045d8fbfe3ab6fd20a40335"},{"author":{"_account_id":7764,"name":"Peter Hamilton","email":"peter.hamilton@jhuapl.edu","username":"Peter"},"change_message_id":"7076fa17f751758df0d4d4bbc14787f703a8abcc","unresolved":false,"context_lines":[{"line_number":29,"context_line":"    BACKING_FILE_RE \u003d re.compile((r\"^(.*?)\\s*\\(actual\\s+path\\s*:\""},{"line_number":30,"context_line":"                                  r\"\\s+(.*?)\\)\\s*$\"), re.I)"},{"line_number":31,"context_line":"    TOP_LEVEL_RE \u003d re.compile(r\"^([\\w\\d\\s\\_\\-]+):(.*)$\")"},{"line_number":32,"context_line":"    SIZE_RE \u003d re.compile(r\"(\\d+)(\\w+)?(\\s*\\(\\s*(\\d+)\\s+bytes\\s*\\))?\", re.I)"},{"line_number":33,"context_line":""},{"line_number":34,"context_line":"    def __init__(self, cmd_output\u003dNone):"},{"line_number":35,"context_line":"        details \u003d self._parse(cmd_output or \u0027\u0027)"}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAAUH%2F%2FlWs%3D","line":32,"in_reply_to":"AAAATn%2F9Gso%3D","updated":"2014-01-10 19:33:57.000000000","message":"I\u0027ve scoped this commit incorrectly, which I will change in the next commit. This commit is not a bug fix. It is pulling in all changes made to imageutils.py in oslo-incubator, including a specific bug fix pertaining to the parsing of qemu-img output. Any changes not immediately pertaining to encryption were made by others in separate commits to oslo-incubator.","commit_id":"4d60b2b0cb46fc3ab045d8fbfe3ab6fd20a40335"},{"author":{"_account_id":1779,"name":"Daniel Berrange","email":"berrange@redhat.com","username":"berrange"},"change_message_id":"8802326e4fe6ed829ed58042cc37403fb6921cb7","unresolved":false,"context_lines":[{"line_number":79,"context_line":"            return int(real_size.group(4))"},{"line_number":80,"context_line":"        elif not unit_of_measure:"},{"line_number":81,"context_line":"            return int(magnitude)"},{"line_number":82,"context_line":"        return strutils.to_bytes(\u0027%s%s\u0027 % (magnitude, unit_of_measure))"},{"line_number":83,"context_line":""},{"line_number":84,"context_line":"    def _extract_details(self, root_cmd, root_details, lines_after):"},{"line_number":85,"context_line":"        real_details \u003d root_details"}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAATn%2F9GsI%3D","line":82,"updated":"2013-12-16 18:58:07.000000000","message":"Again, why are you changing this ?","commit_id":"4d60b2b0cb46fc3ab045d8fbfe3ab6fd20a40335"},{"author":{"_account_id":1779,"name":"Daniel Berrange","email":"berrange@redhat.com","username":"berrange"},"change_message_id":"8802326e4fe6ed829ed58042cc37403fb6921cb7","unresolved":false,"context_lines":[{"line_number":93,"context_line":"            if root_details \u003d\u003d \u0027None\u0027:"},{"line_number":94,"context_line":"                real_details \u003d 0"},{"line_number":95,"context_line":"            else:"},{"line_number":96,"context_line":"                real_details \u003d self._extract_bytes(root_details)"},{"line_number":97,"context_line":"        elif root_cmd \u003d\u003d \u0027file_format\u0027:"},{"line_number":98,"context_line":"            real_details \u003d real_details.strip().lower()"},{"line_number":99,"context_line":"        elif root_cmd \u003d\u003d \u0027snapshot_list\u0027:"}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAATn%2F9GsE%3D","line":96,"updated":"2013-12-16 18:58:07.000000000","message":"And this ?","commit_id":"4d60b2b0cb46fc3ab045d8fbfe3ab6fd20a40335"}],"nova/tests/virt/libvirt/test_image_utils.py":[{"author":{"_account_id":6802,"name":"Joel Coffman","email":"jmc7tp@gmail.com","username":"joel-coffman"},"change_message_id":"a0014c1b81d63003f523d87cae31d74727b35d96","unresolved":false,"context_lines":[{"line_number":262,"context_line":"        self.mox.ReplayAll()"},{"line_number":263,"context_line":"        d_encrypted \u003d libvirt_utils.is_disk_encrypted(path)"},{"line_number":264,"context_line":"        self.assertIs(True, d_encrypted, \"encrypted status must be True\")"},{"line_number":265,"context_line":""},{"line_number":266,"context_line":"    def test_qemu_info_unencrypted(self):"},{"line_number":267,"context_line":"        path \u003d \u0027disk.config\u0027"},{"line_number":268,"context_line":"        template_output \u003d \"\"\"image: %(path)s"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAATn%2F9hJI%3D","line":265,"updated":"2013-12-10 17:09:43.000000000","message":"Appears to be a superfluous blank line.","commit_id":"8825460ebd00de0948276ed6bccc15e52e9dcf61"},{"author":{"_account_id":6802,"name":"Joel Coffman","email":"jmc7tp@gmail.com","username":"joel-coffman"},"change_message_id":"87165452e20fbf90b3c18504be14a89adc8777f7","unresolved":false,"context_lines":[{"line_number":262,"context_line":"        self.mox.ReplayAll()"},{"line_number":263,"context_line":"        d_encrypted \u003d libvirt_utils.is_disk_encrypted(path)"},{"line_number":264,"context_line":"        self.assertIs(True, d_encrypted, \"encrypted status must be True\")"},{"line_number":265,"context_line":""},{"line_number":266,"context_line":"    def test_qemu_info_unencrypted(self):"},{"line_number":267,"context_line":"        path \u003d \u0027disk.config\u0027"},{"line_number":268,"context_line":"        template_output \u003d \"\"\"image: %(path)s"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAATn%2F9hB4%3D","line":265,"in_reply_to":"AAAATn%2F9hHQ%3D","updated":"2013-12-10 17:35:39.000000000","message":"Sorry, my mistake.","commit_id":"8825460ebd00de0948276ed6bccc15e52e9dcf61"},{"author":{"_account_id":7764,"name":"Peter Hamilton","email":"peter.hamilton@jhuapl.edu","username":"Peter"},"change_message_id":"f8797b03dd40a72640afc7d7b33e2caf65900629","unresolved":false,"context_lines":[{"line_number":262,"context_line":"        self.mox.ReplayAll()"},{"line_number":263,"context_line":"        d_encrypted \u003d libvirt_utils.is_disk_encrypted(path)"},{"line_number":264,"context_line":"        self.assertIs(True, d_encrypted, \"encrypted status must be True\")"},{"line_number":265,"context_line":""},{"line_number":266,"context_line":"    def test_qemu_info_unencrypted(self):"},{"line_number":267,"context_line":"        path \u003d \u0027disk.config\u0027"},{"line_number":268,"context_line":"        template_output \u003d \"\"\"image: %(path)s"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAATn%2F9hHQ%3D","line":265,"in_reply_to":"AAAATn%2F9hJI%3D","updated":"2013-12-10 17:17:58.000000000","message":"I only see one blank line separating the methods. Plus this passes the formatting checks.","commit_id":"8825460ebd00de0948276ed6bccc15e52e9dcf61"}],"nova/tests/virt/libvirt/test_libvirt.py":[{"author":{"_account_id":6802,"name":"Joel Coffman","email":"jmc7tp@gmail.com","username":"joel-coffman"},"change_message_id":"f3adc83213ff3a2708ff391b49d02fcbc6073794","unresolved":false,"context_lines":[{"line_number":6519,"context_line":""},{"line_number":6520,"context_line":"        # Start test"},{"line_number":6521,"context_line":"        self.mox.ReplayAll()"},{"line_number":6522,"context_line":"        self.assertEqual(disk.get_disk_size(\u0027/some/path\u0027), 67108864)"},{"line_number":6523,"context_line":""},{"line_number":6524,"context_line":"    def test_copy_image(self):"},{"line_number":6525,"context_line":"        dst_fd, dst_path \u003d tempfile.mkstemp()"}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAATn%2F8840%3D","line":6522,"updated":"2013-12-18 13:15:33.000000000","message":"Concur. I can\u0027t determine the reason for this change and it doesn\u0027t appear to be related to the bug fix.","commit_id":"4d60b2b0cb46fc3ab045d8fbfe3ab6fd20a40335"},{"author":{"_account_id":1779,"name":"Daniel Berrange","email":"berrange@redhat.com","username":"berrange"},"change_message_id":"8802326e4fe6ed829ed58042cc37403fb6921cb7","unresolved":false,"context_lines":[{"line_number":6519,"context_line":""},{"line_number":6520,"context_line":"        # Start test"},{"line_number":6521,"context_line":"        self.mox.ReplayAll()"},{"line_number":6522,"context_line":"        self.assertEqual(disk.get_disk_size(\u0027/some/path\u0027), 67108864)"},{"line_number":6523,"context_line":""},{"line_number":6524,"context_line":"    def test_copy_image(self):"},{"line_number":6525,"context_line":"        dst_fd, dst_path \u003d tempfile.mkstemp()"}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAATn%2F9Gr0%3D","line":6522,"updated":"2013-12-16 18:58:07.000000000","message":"What are these changes for ?","commit_id":"4d60b2b0cb46fc3ab045d8fbfe3ab6fd20a40335"},{"author":{"_account_id":7764,"name":"Peter Hamilton","email":"peter.hamilton@jhuapl.edu","username":"Peter"},"change_message_id":"7076fa17f751758df0d4d4bbc14787f703a8abcc","unresolved":false,"context_lines":[{"line_number":6519,"context_line":""},{"line_number":6520,"context_line":"        # Start test"},{"line_number":6521,"context_line":"        self.mox.ReplayAll()"},{"line_number":6522,"context_line":"        self.assertEqual(disk.get_disk_size(\u0027/some/path\u0027), 67108864)"},{"line_number":6523,"context_line":""},{"line_number":6524,"context_line":"    def test_copy_image(self):"},{"line_number":6525,"context_line":"        dst_fd, dst_path \u003d tempfile.mkstemp()"}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAAUH%2F%2FlVs%3D","line":6522,"in_reply_to":"AAAATn%2F8840%3D","updated":"2014-01-10 19:33:57.000000000","message":"This change is added to fix this unit test, which will break when run against the new changes brought in from oslo-incubator. The regex used to parse the size information no longer matches fractional values (i.e., 4.4M).","commit_id":"4d60b2b0cb46fc3ab045d8fbfe3ab6fd20a40335"}],"nova/virt/libvirt/utils.py":[{"author":{"_account_id":6802,"name":"Joel Coffman","email":"jmc7tp@gmail.com","username":"joel-coffman"},"change_message_id":"faca6aa93065e59c70cd8e55201377ab2733b3f4","unresolved":false,"context_lines":[{"line_number":645,"context_line":"    return os.path.join(CONF.instances_path, instance[\u0027uuid\u0027])"},{"line_number":646,"context_line":""},{"line_number":647,"context_line":""},{"line_number":648,"context_line":"def get_disk_encrypted(path):"},{"line_number":649,"context_line":"    \"\"\"Get the encrypted status of the specified disk."},{"line_number":650,"context_line":""},{"line_number":651,"context_line":"    :param path: path to disk file to analyze"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAATn%2F9pKo%3D","line":648,"updated":"2013-12-09 11:38:06.000000000","message":"I\u0027d prefer \u0027is_disk_encrypted\u0027 or \u0027is_encrypted\u0027, but it isn\u0027t critical.","commit_id":"7c3e1766b1a0011b79a6d964717876d3f577e200"},{"author":{"_account_id":7764,"name":"Peter Hamilton","email":"peter.hamilton@jhuapl.edu","username":"Peter"},"change_message_id":"a5a09eb0fcf3e2ea2631591fd4f48b5f7a13e1f0","unresolved":false,"context_lines":[{"line_number":645,"context_line":"    return os.path.join(CONF.instances_path, instance[\u0027uuid\u0027])"},{"line_number":646,"context_line":""},{"line_number":647,"context_line":""},{"line_number":648,"context_line":"def get_disk_encrypted(path):"},{"line_number":649,"context_line":"    \"\"\"Get the encrypted status of the specified disk."},{"line_number":650,"context_line":""},{"line_number":651,"context_line":"    :param path: path to disk file to analyze"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAATn%2F9l0M%3D","line":648,"in_reply_to":"AAAATn%2F9pKo%3D","updated":"2013-12-09 21:42:31.000000000","message":"Done","commit_id":"7c3e1766b1a0011b79a6d964717876d3f577e200"},{"author":{"_account_id":1779,"name":"Daniel Berrange","email":"berrange@redhat.com","username":"berrange"},"change_message_id":"8802326e4fe6ed829ed58042cc37403fb6921cb7","unresolved":false,"context_lines":[{"line_number":654,"context_line":"    if images.qemu_img_info(path).encrypted \u003d\u003d \u0027yes\u0027:"},{"line_number":655,"context_line":"        return True"},{"line_number":656,"context_line":"    else:"},{"line_number":657,"context_line":"        return False"}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAATn%2F9GrM%3D","line":657,"updated":"2013-12-16 18:58:07.000000000","message":"This method appears to only be used in the test suite code. Unless you\u0027ve got further patches coming later that need this method, I think we can just inline the check in the test suite code and avoid adding this method.","commit_id":"4d60b2b0cb46fc3ab045d8fbfe3ab6fd20a40335"},{"author":{"_account_id":7764,"name":"Peter Hamilton","email":"peter.hamilton@jhuapl.edu","username":"Peter"},"change_message_id":"7076fa17f751758df0d4d4bbc14787f703a8abcc","unresolved":false,"context_lines":[{"line_number":654,"context_line":"    if images.qemu_img_info(path).encrypted \u003d\u003d \u0027yes\u0027:"},{"line_number":655,"context_line":"        return True"},{"line_number":656,"context_line":"    else:"},{"line_number":657,"context_line":"        return False"}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAAUH%2F%2FlVQ%3D","line":657,"in_reply_to":"AAAATn%2F9GrM%3D","updated":"2014-01-10 19:33:57.000000000","message":"I am planning on using this in later patches pertaining to ephemeral storage encryption with qcow2.","commit_id":"4d60b2b0cb46fc3ab045d8fbfe3ab6fd20a40335"}]}
