)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"aacb2b892d7a47e8ab32de2d3fd3465569c5bdf6","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Commit:     Sahid Orentino Ferdjaoui \u003csahid.ferdjaoui@redhat.com\u003e"},{"line_number":5,"context_line":"CommitDate: 2015-06-12 03:07:09 -0400"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"libvirt: update live swnapshot to use Guest"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"This commit updates the method _live_snapshot to make it"},{"line_number":10,"context_line":"passing a object Guest and then use object GuestBlock"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"fa32b979_4c1e0771","line":7,"updated":"2015-06-18 16:17:37.000000000","message":"s/swnapshot/snapshot/","commit_id":"72cbcaef725b76f71f86f91bea3dc9212480667d"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"aacb2b892d7a47e8ab32de2d3fd3465569c5bdf6","unresolved":false,"context_lines":[{"line_number":7,"context_line":"libvirt: update live swnapshot to use Guest"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"This commit updates the method _live_snapshot to make it"},{"line_number":10,"context_line":"passing a object Guest and then use object GuestBlock"},{"line_number":11,"context_line":"to deal with block device operations."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"Change-Id: Ied992215ff526b229e2f2063d1bbe8aa154e6fb9"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"fa32b979_ef07cd15","line":10,"updated":"2015-06-18 16:17:37.000000000","message":"s/passing a object Guest/pass a Guest object/ :)","commit_id":"72cbcaef725b76f71f86f91bea3dc9212480667d"}],"nova/tests/unit/virt/libvirt/test_driver.py":[{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"90abd878782a0c4b35e9c99f9284e65a18d7c37b","unresolved":false,"context_lines":[{"line_number":11037,"context_line":"                srcfile, dltfile, 0, flags\u003d("},{"line_number":11038,"context_line":"                    fakelibvirt.VIR_DOMAIN_BLOCK_REBASE_COPY |"},{"line_number":11039,"context_line":"                    fakelibvirt.VIR_DOMAIN_BLOCK_REBASE_REUSE_EXT |"},{"line_number":11040,"context_line":"                    fakelibvirt.VIR_DOMAIN_BLOCK_REBASE_SHALLOW))"},{"line_number":11041,"context_line":""},{"line_number":11042,"context_line":"            mock_size.assert_called_once_with(srcfile)"},{"line_number":11043,"context_line":"            mock_backing.assert_called_once_with(srcfile, basename\u003dFalse)"}],"source_content_type":"text/x-python","patch_set":8,"id":"ba3cc151_7ced7224","line":11040,"updated":"2015-07-06 14:09:26.000000000","message":"nit: not necessary to use the parens around the bitwise-OR\u0027d flags...","commit_id":"715a72f5c5304e09edd0bcaa95f1a26f6a96d764"},{"author":{"_account_id":5511,"name":"Nikola Dipanov","email":"ndipanov@redhat.com","username":"ndipanov"},"change_message_id":"e8cd77e907afa8ccf0b7f32bfedf68e7e73a6084","unresolved":false,"context_lines":[{"line_number":11033,"context_line":"            mock_dom.XMLDesc.assert_called_once_with(flags\u003d("},{"line_number":11034,"context_line":"                fakelibvirt.VIR_DOMAIN_XML_INACTIVE |"},{"line_number":11035,"context_line":"                fakelibvirt.VIR_DOMAIN_XML_SECURE))"},{"line_number":11036,"context_line":"            mock_dom.blockRebase.assert_called_once_with("},{"line_number":11037,"context_line":"                srcfile, dltfile, 0, flags\u003d("},{"line_number":11038,"context_line":"                    fakelibvirt.VIR_DOMAIN_BLOCK_REBASE_COPY |"},{"line_number":11039,"context_line":"                    fakelibvirt.VIR_DOMAIN_BLOCK_REBASE_REUSE_EXT |"}],"source_content_type":"text/x-python","patch_set":9,"id":"ba3cc151_84c95128","line":11036,"updated":"2015-07-09 10:56:58.000000000","message":"So I am thinking of whether these tests need to be made to check for the new class method calls or not. I personally prefer to test as much as possible but not more than necessary :) in a test, so I think this is a better approach _in this particular case_ since this is very closley tied together. I could see arguments for both really","commit_id":"1a589660195f91e79659010de957439960bdfb32"}],"nova/virt/libvirt/driver.py":[{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"aacb2b892d7a47e8ab32de2d3fd3465569c5bdf6","unresolved":false,"context_lines":[{"line_number":1509,"context_line":"    def _live_snapshot(self, context, instance, guest, disk_path, out_path,"},{"line_number":1510,"context_line":"                       image_format, image_meta):"},{"line_number":1511,"context_line":"        \"\"\"Snapshot an instance without downtime.\"\"\""},{"line_number":1512,"context_line":"        gblock \u003d guest.get_guest_block(disk_path)"},{"line_number":1513,"context_line":""},{"line_number":1514,"context_line":"        # Save a copy of the domain\u0027s persistent XML file"},{"line_number":1515,"context_line":"        xml \u003d guest.get_xml_desc(dump_inactive\u003dTrue, dump_sensitive\u003dTrue)"}],"source_content_type":"text/x-python","patch_set":2,"id":"fa32b979_8fb3a14c","line":1512,"updated":"2015-06-18 16:17:37.000000000","message":"recommend:\n\n dev \u003d guest.get_block_device(disk_path)","commit_id":"72cbcaef725b76f71f86f91bea3dc9212480667d"},{"author":{"_account_id":7730,"name":"Sahid Orentino Ferdjaoui","email":"sahid.ferdjaoui@industrialdiscipline.com","username":"sahid"},"change_message_id":"cb5fe542f491b8b83576f7c954781b6e1f61e7b0","unresolved":false,"context_lines":[{"line_number":1509,"context_line":"    def _live_snapshot(self, context, instance, guest, disk_path, out_path,"},{"line_number":1510,"context_line":"                       image_format, image_meta):"},{"line_number":1511,"context_line":"        \"\"\"Snapshot an instance without downtime.\"\"\""},{"line_number":1512,"context_line":"        gblock \u003d guest.get_guest_block(disk_path)"},{"line_number":1513,"context_line":""},{"line_number":1514,"context_line":"        # Save a copy of the domain\u0027s persistent XML file"},{"line_number":1515,"context_line":"        xml \u003d guest.get_xml_desc(dump_inactive\u003dTrue, dump_sensitive\u003dTrue)"}],"source_content_type":"text/x-python","patch_set":2,"id":"fa32b979_e0af7e7b","line":1512,"in_reply_to":"fa32b979_8fb3a14c","updated":"2015-06-22 10:45:12.000000000","message":"Ok i will update the code to use dev as name","commit_id":"72cbcaef725b76f71f86f91bea3dc9212480667d"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"aacb2b892d7a47e8ab32de2d3fd3465569c5bdf6","unresolved":false,"context_lines":[{"line_number":1543,"context_line":"            #             domains, so we need to temporarily undefine it."},{"line_number":1544,"context_line":"            #             If any part of this block fails, the domain is"},{"line_number":1545,"context_line":"            #             re-defined regardless."},{"line_number":1546,"context_line":"            if guest._domain.isPersistent():"},{"line_number":1547,"context_line":"                guest.delete_configuration()"},{"line_number":1548,"context_line":""},{"line_number":1549,"context_line":"            # NOTE (rmk): Establish a temporary mirror of our root disk and"}],"source_content_type":"text/x-python","patch_set":2,"id":"fa32b979_cf94498c","line":1546,"updated":"2015-06-18 16:17:37.000000000","message":"See comment on previous patch series about adding an is_persistent() method to the Guest object.","commit_id":"72cbcaef725b76f71f86f91bea3dc9212480667d"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"aacb2b892d7a47e8ab32de2d3fd3465569c5bdf6","unresolved":false,"context_lines":[{"line_number":1550,"context_line":"            #             issue an abort once we have a complete copy."},{"line_number":1551,"context_line":"            gblock.rebase(disk_delta, copy\u003dTrue, reuse_ext\u003dTrue, shallow\u003dTrue)"},{"line_number":1552,"context_line":""},{"line_number":1553,"context_line":"            while self._wait_for_block_job(guest._domain, disk_path):"},{"line_number":1554,"context_line":"                time.sleep(0.5)"},{"line_number":1555,"context_line":""},{"line_number":1556,"context_line":"            gblock.job_abort()"}],"source_content_type":"text/x-python","patch_set":2,"id":"fa32b979_4fefd91d","line":1553,"updated":"2015-06-18 16:17:37.000000000","message":"And the previous comment about _wait_for_block_job() accepting a Guest object :)","commit_id":"72cbcaef725b76f71f86f91bea3dc9212480667d"},{"author":{"_account_id":7730,"name":"Sahid Orentino Ferdjaoui","email":"sahid.ferdjaoui@industrialdiscipline.com","username":"sahid"},"change_message_id":"cb5fe542f491b8b83576f7c954781b6e1f61e7b0","unresolved":false,"context_lines":[{"line_number":1550,"context_line":"            #             issue an abort once we have a complete copy."},{"line_number":1551,"context_line":"            gblock.rebase(disk_delta, copy\u003dTrue, reuse_ext\u003dTrue, shallow\u003dTrue)"},{"line_number":1552,"context_line":""},{"line_number":1553,"context_line":"            while self._wait_for_block_job(guest._domain, disk_path):"},{"line_number":1554,"context_line":"                time.sleep(0.5)"},{"line_number":1555,"context_line":""},{"line_number":1556,"context_line":"            gblock.job_abort()"}],"source_content_type":"text/x-python","patch_set":2,"id":"fa32b979_4092ea4c","line":1553,"in_reply_to":"fa32b979_4fefd91d","updated":"2015-06-22 10:45:12.000000000","message":"Arf you are thinking to quick ! these method are implemented in next patches, let me try to reorder the serie :)","commit_id":"72cbcaef725b76f71f86f91bea3dc9212480667d"}]}
